Changes in / [b0ab7853:08065aa4]
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Jenkinsfile
rb0ab7853 r08065aa4 2 2 3 3 import groovy.transform.Field 4 5 // For skipping stages6 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils7 4 8 5 //=========================================================================================================== … … 85 82 //=========================================================================================================== 86 83 def clean() { 87 build_stage('Cleanup' , true) {84 build_stage('Cleanup') { 88 85 // clean the build by wipping the build directory 89 86 dir(BuildDir) { … … 95 92 //Compilation script is done here but environnement set-up and error handling is done in main loop 96 93 def checkout() { 97 build_stage('Checkout' , true) {94 build_stage('Checkout') { 98 95 //checkout the source code and clean the repo 99 96 final scmVars = checkout scm … … 106 103 107 104 def build() { 108 build_stage('Build' , true) {105 build_stage('Build') { 109 106 // Build outside of the src tree to ease cleaning 110 107 dir (BuildDir) { … … 128 125 129 126 def test() { 130 build_stage('Test: short', !Settings.RunAllTests) { 127 build_stage('Test') { 128 131 129 dir (BuildDir) { 132 130 //Run the tests from the tests directory 133 sh 'make --no-print-directory -C tests' 134 } 135 } 136 137 build_stage('Test: full', Settings.RunAllTests) { 138 dir (BuildDir) { 139 //Run the tests from the tests directory 140 sh 'make --no-print-directory -C tests timeouts="--timeout=600 --global-timeout=14400" all-tests debug=yes' 141 sh 'make --no-print-directory -C tests timeouts="--timeout=600 --global-timeout=14400" all-tests debug=no ' 131 if ( Settings.RunAllTests ) { 132 sh 'make --no-print-directory -C tests timeouts="--timeout=1200" all-tests debug=yes' 133 sh 'make --no-print-directory -C tests timeouts="--timeout=1200" all-tests debug=no ' 134 } 135 else { 136 sh 'make --no-print-directory -C tests' 137 } 142 138 } 143 139 } … … 145 141 146 142 def benchmark() { 147 build_stage('Benchmark', Settings.RunBenchmark) { 143 build_stage('Benchmark') { 144 145 if( !Settings.RunBenchmark ) return 146 148 147 dir (BuildDir) { 149 148 //Append bench results … … 154 153 155 154 def build_doc() { 156 build_stage('Documentation', Settings.BuildDocumentation) { 155 build_stage('Documentation') { 156 157 if( !Settings.BuildDocumentation ) return 158 157 159 dir ('doc/user') { 158 160 make_doc() … … 166 168 167 169 def publish() { 168 build_stage('Publish' , true) {170 build_stage('Publish') { 169 171 170 172 if( Settings.Publish && !Settings.RunBenchmark ) { echo 'No results to publish!!!' } … … 410 412 } 411 413 412 def build_stage(String name, boolean run,Closure block ) {414 def build_stage(String name, Closure block ) { 413 415 StageName = name 414 416 echo " -------- ${StageName} -------- " 415 if(run) { 416 stage(name, block) 417 } else { 418 stage(name) { Utils.markStageSkippedForConditional(STAGE_NAME) } 419 } 417 stage(name, block) 420 418 } 421 419 -
tests/pybin/tools.py
rb0ab7853 r08065aa4 179 179 os.chdir(cwd) 180 180 181 def killgroup():182 try:183 os.killpg(os.getpgrp(), signal.SIGINT)184 except KeyboardInterrupt:185 pass # expected186 except Exception as exc:187 print("Unexpected exception", file=sys.stderr)188 print(exc, file=sys.stderr)189 sys.stderr.flush()190 sys.exit(2)191 192 181 ################################################################################ 193 182 # file handling … … 312 301 self.end = time.time() 313 302 self.duration = self.end - self.start 314 315 def timed(src, timeout):316 expire = time.time() + timeout317 i = iter(src)318 while True:319 yield i.next(max(expire - time.time(), 0)) -
tests/test.py
rb0ab7853 r08065aa4 202 202 if error : 203 203 text = text + '\n' + error 204 205 return retcode == TestResult.SUCCESS, text 204 out = sys.stderr 205 206 print(text, file = out) 207 sys.stdout.flush() 208 sys.stderr.flush() 209 210 return retcode != TestResult.SUCCESS 206 211 except KeyboardInterrupt: 207 return False, "" 208 except: 209 print("Unexpected error in worker thread", file=sys.stderr) 210 sys.stderr.flush() 211 return False, "" 212 212 False 213 213 214 214 # run the given list of tests with the given parameters … … 220 220 pool = multiprocessing.Pool(jobs) 221 221 222 failed = False223 224 222 # for each test to run 225 223 try : 226 num = len(tests) 227 fancy = sys.stdout.isatty() 228 results = pool.imap_unordered( 224 results = pool.map_async( 229 225 run_test_worker, 230 226 tests, 231 227 chunksize = 1 232 ) 233 234 for i, (succ, txt) in enumerate(timed(results, timeout = settings.timeout.total), 1) : 235 if not succ : 236 failed = True 237 238 print(" " + txt) 239 240 if(fancy and i != num): 241 print("%d/%d" % (i, num), end='\r') 242 sys.stdout.flush() 243 228 ).get(settings.timeout.total) 244 229 except KeyboardInterrupt: 245 print("Tests interrupted by user", file=sys.stderr)246 230 pool.terminate() 247 pool.join() 248 failed = True 249 except multiprocessing.TimeoutError: 250 print("ERROR: Test suite timed out", file=sys.stderr) 251 pool.terminate() 252 pool.join() 253 failed = True 254 killgroup() # needed to cleanly kill all children 255 231 print("Tests interrupted by user") 232 sys.exit(1) 256 233 257 234 # clean the workspace 258 235 make('clean', output=subprocess.DEVNULL, error=subprocess.DEVNULL) 259 236 260 return 1 if failed else 0 237 for failed in results: 238 if failed : 239 return 1 240 241 return 0 261 242 262 243
Note: See TracChangeset
for help on using the changeset viewer.