PageRenderTime 77ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/testsuite/TestCobaltClients/test_files/qsub_test.py

https://github.com/benmcclelland/cobalt
Python | 5888 lines | 5881 code | 2 blank | 5 comment | 0 complexity | e5f1db594171dc0842e1c36c25b2834b MD5 | raw file
Possible License(s): Unlicense, Apache-2.0, LGPL-2.1

Large files files are truncated, but you can click here to view the full file

  1. import testutils
  2. # ---------------------------------------------------------------------------------
  3. def test_qsub_all_options_1():
  4. """
  5. qsub test run: all_options_1
  6. """
  7. args = """-v -A myproj --attrs=a=1:b=2 --cwd /tmp -d --debuglog=/tmp/d --dependencies=1:2:3 -e /tmp/e --env v1=1:v2=2 --geometry 198x198x198x198 -h -i /bin/ls -M myemal@gmail.com -n10 -o /tmp/o -O /tmp --proccount 10 -qqueue --run_users user1:user2:user3 --run_project -t 10 --mode script --kernel kernel -K kopts /bin/ls"""
  8. cmdout = \
  9. """1
  10. """
  11. cmderr = \
  12. """
  13. qsub.py -v -A myproj --attrs=a=1:b=2 --cwd /tmp -d --debuglog=/tmp/d --dependencies=1:2:3 -e /tmp/e --env v1=1:v2=2 --geometry 198x198x198x198 -h -i /bin/ls -M myemal@gmail.com -n10 -o /tmp/o -O /tmp --proccount 10 -qqueue --run_users user1:user2:user3 --run_project -t 10 --mode script --kernel kernel -K kopts /bin/ls
  14. component: "queue-manager.get_jobs", defer: True
  15. get_jobs(
  16. [{'jobid': 1}, {'jobid': 3}, {'jobid': 2}],
  17. )
  18. component: "system.validate_job", defer: False
  19. validate_job(
  20. {'kernel': 'kernel', 'verbose': True, 'held': True, 'notify': 'myemal@gmail.com', 'ion_kerneloptions': False, 'project': 'myproj', 'preemptable': False, 'forcenoval': False, 'umask': False, 'version': False, 'env': 'v1=1:v2=2', 'cwd': '/tmp', 'run_project': True, 'outputprefix': '/tmp', 'kerneloptions': 'kopts', 'time': '10', 'jobname': False, 'debug': True, 'dependencies': '1:2:3', 'debuglog': '/tmp/d', 'ion_kernel': 'default', 'proccount': '10', 'disable_preboot': False, 'geometry': '198x198x198x198', 'queue': 'queue', 'mode': 'script', 'error': '/tmp/e', 'nodecount': '10', 'output': '/tmp/o', 'inputfile': '/bin/ls', 'attrs': {'a': '1', 'b': '2'}, 'user_list': 'user1:user2:user3', 'interactive': False},
  21. )
  22. component: "queue-manager.add_jobs", defer: False
  23. add_jobs(
  24. [{'kernel': 'kernel', 'errorpath': '/tmp/e', 'outputpath': '/tmp/o', 'tag': 'job', 'notify': 'myemal@gmail.com', 'outputdir': '/tmp', 'queue': 'queue', 'envs': {'v1': '1', 'v2': '2'}, 'umask': 18, 'nodes': 10, 'cwd': '/tmp', 'run_project': True, 'kerneloptions': 'kopts', 'args': [], 'cobalt_log_file': '/tmp/d', 'user': 'gooduser', 'path': '/tmp', 'ion_kernel': 'default', 'procs': '10', 'walltime': '10', 'geometry': [198, 198, 198, 198, 2], 'user_hold': True, 'jobid': '*', 'project': 'myproj', 'script_preboot': True, 'command': '/bin/ls', 'mode': 'script', 'all_dependencies': '1:2:3', 'attrs': {'a': '1', 'b': '2'}, 'user_list': ['gooduser', 'user1', 'user2', 'user3'], 'inputfile': '/bin/ls'}],
  25. )
  26. Environment Vars: {'v1': '1', 'v2': '2'}
  27. """
  28. stubout = \
  29. """
  30. GET_JOBS
  31. jobid:1
  32. jobid type: <type 'int'>
  33. jobid:3
  34. jobid type: <type 'int'>
  35. jobid:2
  36. jobid type: <type 'int'>
  37. ADD_JOBS
  38. all_dependencies:1:2:3
  39. all_dependencies type: <type 'str'>
  40. args:[]
  41. args type: <type 'list'>
  42. attrs:{'a': '1', 'b': '2'}
  43. attrs type: <type 'dict'>
  44. cobalt_log_file:/tmp/d
  45. cobalt_log_file type: <type 'str'>
  46. command:/bin/ls
  47. command type: <type 'str'>
  48. cwd:/tmp
  49. cwd type: <type 'str'>
  50. envs:{'v1': '1', 'v2': '2'}
  51. envs type: <type 'dict'>
  52. errorpath:/tmp/e
  53. errorpath type: <type 'str'>
  54. geometry:[198, 198, 198, 198, 2]
  55. geometry type: <type 'list'>
  56. inputfile:/bin/ls
  57. inputfile type: <type 'str'>
  58. ion_kernel:default
  59. ion_kernel type: <type 'str'>
  60. jobid:*
  61. jobid type: <type 'str'>
  62. kernel:kernel
  63. kernel type: <type 'str'>
  64. kerneloptions:kopts
  65. kerneloptions type: <type 'str'>
  66. mode:script
  67. mode type: <type 'str'>
  68. nodes:10
  69. nodes type: <type 'int'>
  70. notify:myemal@gmail.com
  71. notify type: <type 'str'>
  72. outputdir:/tmp
  73. outputdir type: <type 'str'>
  74. outputpath:/tmp/o
  75. outputpath type: <type 'str'>
  76. path:/tmp
  77. path type: <type 'str'>
  78. procs:10
  79. procs type: <type 'str'>
  80. project:myproj
  81. project type: <type 'str'>
  82. queue:queue
  83. queue type: <type 'str'>
  84. run_project:True
  85. run_project type: <type 'bool'>
  86. script_preboot:True
  87. script_preboot type: <type 'bool'>
  88. tag:job
  89. tag type: <type 'str'>
  90. umask:18
  91. umask type: <type 'int'>
  92. user:gooduser
  93. user type: <type 'str'>
  94. user_hold:True
  95. user_hold type: <type 'bool'>
  96. user_list:['gooduser', 'user1', 'user2', 'user3']
  97. user_list type: <type 'list'>
  98. walltime:10
  99. walltime type: <type 'str'>
  100. VALIDATE_JOB
  101. attrs:{'a': '1', 'b': '2'}
  102. attrs type: <type 'dict'>
  103. cwd:/tmp
  104. cwd type: <type 'str'>
  105. debug:True
  106. debug type: <type 'bool'>
  107. debuglog:/tmp/d
  108. debuglog type: <type 'str'>
  109. dependencies:1:2:3
  110. dependencies type: <type 'str'>
  111. disable_preboot:False
  112. disable_preboot type: <type 'bool'>
  113. env:v1=1:v2=2
  114. env type: <type 'str'>
  115. error:/tmp/e
  116. error type: <type 'str'>
  117. forcenoval:False
  118. forcenoval type: <type 'bool'>
  119. geometry:198x198x198x198
  120. geometry type: <type 'str'>
  121. held:True
  122. held type: <type 'bool'>
  123. inputfile:/bin/ls
  124. inputfile type: <type 'str'>
  125. interactive:False
  126. interactive type: <type 'bool'>
  127. ion_kernel:default
  128. ion_kernel type: <type 'str'>
  129. ion_kerneloptions:False
  130. ion_kerneloptions type: <type 'bool'>
  131. jobname:False
  132. jobname type: <type 'bool'>
  133. kernel:kernel
  134. kernel type: <type 'str'>
  135. kerneloptions:kopts
  136. kerneloptions type: <type 'str'>
  137. mode:script
  138. mode type: <type 'str'>
  139. nodecount:10
  140. nodecount type: <type 'str'>
  141. notify:myemal@gmail.com
  142. notify type: <type 'str'>
  143. output:/tmp/o
  144. output type: <type 'str'>
  145. outputprefix:/tmp
  146. outputprefix type: <type 'str'>
  147. preemptable:False
  148. preemptable type: <type 'bool'>
  149. proccount:10
  150. proccount type: <type 'str'>
  151. project:myproj
  152. project type: <type 'str'>
  153. queue:queue
  154. queue type: <type 'str'>
  155. run_project:True
  156. run_project type: <type 'bool'>
  157. time:10
  158. time type: <type 'str'>
  159. umask:False
  160. umask type: <type 'bool'>
  161. user_list:user1:user2:user3
  162. user_list type: <type 'str'>
  163. verbose:True
  164. verbose type: <type 'bool'>
  165. version:False
  166. version type: <type 'bool'>
  167. """
  168. stubout_file = "stub.out"
  169. expected_results = (
  170. 0, # Expected return status
  171. cmdout, # Expected command output
  172. stubout, # Expected stub functions output
  173. cmderr, # Expected command error output
  174. )
  175. testutils.save_testhook("")
  176. results = testutils.run_cmd('qsub.py',args,stubout_file)
  177. result = testutils.validate_results(results,expected_results)
  178. testutils.remove_testhook()
  179. correct = 1
  180. assert result == correct, "Result:\n%s" % result
  181. # ---------------------------------------------------------------------------------
  182. def test_qsub_misc_1():
  183. """
  184. qsub test run: misc_1
  185. """
  186. args = """--mode script -n 512 --env BG_COREDUMPDISABLED=1 --proccount 512 -t 30 -q testing /bin/ls"""
  187. cmdout = \
  188. """1
  189. """
  190. cmderr = ''
  191. stubout = \
  192. """
  193. ADD_JOBS
  194. args:[]
  195. args type: <type 'list'>
  196. command:/bin/ls
  197. command type: <type 'str'>
  198. cwd:/tmp
  199. cwd type: <type 'str'>
  200. envs:{'BG_COREDUMPDISABLED': '1'}
  201. envs type: <type 'dict'>
  202. ion_kernel:default
  203. ion_kernel type: <type 'str'>
  204. jobid:*
  205. jobid type: <type 'str'>
  206. kernel:default
  207. kernel type: <type 'str'>
  208. mode:script
  209. mode type: <type 'str'>
  210. nodes:512
  211. nodes type: <type 'int'>
  212. outputdir:/tmp
  213. outputdir type: <type 'str'>
  214. path:/tmp
  215. path type: <type 'str'>
  216. procs:512
  217. procs type: <type 'str'>
  218. queue:testing
  219. queue type: <type 'str'>
  220. run_project:False
  221. run_project type: <type 'bool'>
  222. script_preboot:True
  223. script_preboot type: <type 'bool'>
  224. tag:job
  225. tag type: <type 'str'>
  226. umask:18
  227. umask type: <type 'int'>
  228. user:gooduser
  229. user type: <type 'str'>
  230. user_list:['gooduser']
  231. user_list type: <type 'list'>
  232. walltime:30
  233. walltime type: <type 'str'>
  234. VALIDATE_JOB
  235. attrs:{}
  236. attrs type: <type 'dict'>
  237. cwd:/tmp
  238. cwd type: <type 'str'>
  239. debug:False
  240. debug type: <type 'bool'>
  241. debuglog:False
  242. debuglog type: <type 'bool'>
  243. dependencies:False
  244. dependencies type: <type 'bool'>
  245. disable_preboot:False
  246. disable_preboot type: <type 'bool'>
  247. env:BG_COREDUMPDISABLED=1
  248. env type: <type 'str'>
  249. error:False
  250. error type: <type 'bool'>
  251. forcenoval:False
  252. forcenoval type: <type 'bool'>
  253. geometry:False
  254. geometry type: <type 'bool'>
  255. held:False
  256. held type: <type 'bool'>
  257. inputfile:False
  258. inputfile type: <type 'bool'>
  259. interactive:False
  260. interactive type: <type 'bool'>
  261. ion_kernel:default
  262. ion_kernel type: <type 'str'>
  263. ion_kerneloptions:False
  264. ion_kerneloptions type: <type 'bool'>
  265. jobname:False
  266. jobname type: <type 'bool'>
  267. kernel:default
  268. kernel type: <type 'str'>
  269. kerneloptions:False
  270. kerneloptions type: <type 'bool'>
  271. mode:script
  272. mode type: <type 'str'>
  273. nodecount:512
  274. nodecount type: <type 'str'>
  275. notify:False
  276. notify type: <type 'bool'>
  277. output:False
  278. output type: <type 'bool'>
  279. outputprefix:False
  280. outputprefix type: <type 'bool'>
  281. preemptable:False
  282. preemptable type: <type 'bool'>
  283. proccount:512
  284. proccount type: <type 'str'>
  285. project:False
  286. project type: <type 'bool'>
  287. queue:testing
  288. queue type: <type 'str'>
  289. run_project:False
  290. run_project type: <type 'bool'>
  291. time:30
  292. time type: <type 'str'>
  293. umask:False
  294. umask type: <type 'bool'>
  295. user_list:False
  296. user_list type: <type 'bool'>
  297. verbose:False
  298. verbose type: <type 'bool'>
  299. version:False
  300. version type: <type 'bool'>
  301. """
  302. stubout_file = "stub.out"
  303. expected_results = (
  304. 0, # Expected return status
  305. cmdout, # Expected command output
  306. stubout, # Expected stub functions output
  307. cmderr, # Expected command error output
  308. )
  309. testutils.save_testhook("")
  310. results = testutils.run_cmd('qsub.py',args,stubout_file)
  311. result = testutils.validate_results(results,expected_results)
  312. testutils.remove_testhook()
  313. correct = 1
  314. assert result == correct, "Result:\n%s" % result
  315. # ---------------------------------------------------------------------------------
  316. def test_qsub_no_options_passed():
  317. """
  318. qsub test run: no_options_passed
  319. """
  320. args = """/bin/ls"""
  321. cmdout = \
  322. """Usage: qsub.py --help
  323. Usage: qsub.py [options] <executable> [<excutable options>]
  324. Refer to man pages for JOBID EXPANSION and SCRIPT JOB DIRECTIVES.
  325. """
  326. cmderr = \
  327. """No required options provided
  328. """
  329. stubout = ''
  330. stubout_file = "stub.out"
  331. expected_results = (
  332. 256, # Expected return status
  333. cmdout, # Expected command output
  334. stubout, # Expected stub functions output
  335. cmderr, # Expected command error output
  336. )
  337. testutils.save_testhook("")
  338. results = testutils.run_cmd('qsub.py',args,stubout_file)
  339. result = testutils.validate_results(results,expected_results)
  340. testutils.remove_testhook()
  341. correct = 1
  342. assert result == correct, "Result:\n%s" % result
  343. # ---------------------------------------------------------------------------------
  344. def test_qsub_non_existant_option():
  345. """
  346. qsub test run: non_existant_option
  347. """
  348. args = """-z -t10 -n10 /bin/ls"""
  349. cmdout = ''
  350. cmderr = \
  351. """Usage: qsub.py --help
  352. Usage: qsub.py [options] <executable> [<excutable options>]
  353. Refer to man pages for JOBID EXPANSION and SCRIPT JOB DIRECTIVES.
  354. qsub.py: error: no such option: -z
  355. """
  356. stubout = ''
  357. stubout_file = "stub.out"
  358. expected_results = (
  359. 512, # Expected return status
  360. cmdout, # Expected command output
  361. stubout, # Expected stub functions output
  362. cmderr, # Expected command error output
  363. )
  364. testutils.save_testhook("")
  365. results = testutils.run_cmd('qsub.py',args,stubout_file)
  366. result = testutils.validate_results(results,expected_results)
  367. testutils.remove_testhook()
  368. correct = 1
  369. assert result == correct, "Result:\n%s" % result
  370. # ---------------------------------------------------------------------------------
  371. def test_qsub_debug_flag_only_1():
  372. """
  373. qsub test run: debug_flag_only_1
  374. """
  375. args = """-d"""
  376. cmdout = \
  377. """Usage: qsub.py --help
  378. Usage: qsub.py [options] <executable> [<excutable options>]
  379. Refer to man pages for JOBID EXPANSION and SCRIPT JOB DIRECTIVES.
  380. """
  381. cmderr = \
  382. """
  383. qsub.py -d
  384. No executable or script specified
  385. """
  386. stubout = ''
  387. stubout_file = "stub.out"
  388. expected_results = (
  389. 256, # Expected return status
  390. cmdout, # Expected command output
  391. stubout, # Expected stub functions output
  392. cmderr, # Expected command error output
  393. )
  394. testutils.save_testhook("")
  395. results = testutils.run_cmd('qsub.py',args,stubout_file)
  396. result = testutils.validate_results(results,expected_results)
  397. testutils.remove_testhook()
  398. correct = 1
  399. assert result == correct, "Result:\n%s" % result
  400. # ---------------------------------------------------------------------------------
  401. def test_qsub_debug_flag_only_2():
  402. """
  403. qsub test run: debug_flag_only_2
  404. """
  405. args = """-debug"""
  406. cmdout = \
  407. """Usage: qsub.py --help
  408. Usage: qsub.py [options] <executable> [<excutable options>]
  409. Refer to man pages for JOBID EXPANSION and SCRIPT JOB DIRECTIVES.
  410. """
  411. cmderr = \
  412. """
  413. qsub.py -debug
  414. No executable or script specified
  415. """
  416. stubout = ''
  417. stubout_file = "stub.out"
  418. expected_results = (
  419. 256, # Expected return status
  420. cmdout, # Expected command output
  421. stubout, # Expected stub functions output
  422. cmderr, # Expected command error output
  423. )
  424. testutils.save_testhook("")
  425. results = testutils.run_cmd('qsub.py',args,stubout_file)
  426. result = testutils.validate_results(results,expected_results)
  427. testutils.remove_testhook()
  428. correct = 1
  429. assert result == correct, "Result:\n%s" % result
  430. # ---------------------------------------------------------------------------------
  431. def test_qsub_verbose_flag_only():
  432. """
  433. qsub test run: verbose_flag_only
  434. """
  435. args = """-v"""
  436. cmdout = \
  437. """Usage: qsub.py --help
  438. Usage: qsub.py [options] <executable> [<excutable options>]
  439. Refer to man pages for JOBID EXPANSION and SCRIPT JOB DIRECTIVES.
  440. """
  441. cmderr = \
  442. """No executable or script specified
  443. """
  444. stubout = ''
  445. stubout_file = "stub.out"
  446. expected_results = (
  447. 256, # Expected return status
  448. cmdout, # Expected command output
  449. stubout, # Expected stub functions output
  450. cmderr, # Expected command error output
  451. )
  452. testutils.save_testhook("")
  453. results = testutils.run_cmd('qsub.py',args,stubout_file)
  454. result = testutils.validate_results(results,expected_results)
  455. testutils.remove_testhook()
  456. correct = 1
  457. assert result == correct, "Result:\n%s" % result
  458. # ---------------------------------------------------------------------------------
  459. def test_qsub_non_integer_nodecount():
  460. """
  461. qsub test run: non_integer_nodecount
  462. """
  463. args = """--mode smp -t50 -nfive --geometry 40x40x50x50 /bin/ls"""
  464. cmdout = ''
  465. cmderr = \
  466. """Specifed mode 'smp' not valid, valid modes are
  467. co
  468. vn
  469. script
  470. interactive
  471. """
  472. stubout = ''
  473. stubout_file = "stub.out"
  474. expected_results = (
  475. 256, # Expected return status
  476. cmdout, # Expected command output
  477. stubout, # Expected stub functions output
  478. cmderr, # Expected command error output
  479. )
  480. testutils.save_testhook("")
  481. results = testutils.run_cmd('qsub.py',args,stubout_file)
  482. result = testutils.validate_results(results,expected_results)
  483. testutils.remove_testhook()
  484. correct = 1
  485. assert result == correct, "Result:\n%s" % result
  486. # ---------------------------------------------------------------------------------
  487. def test_qsub_non_realistic_nodecount():
  488. """
  489. qsub test run: non_realistic_nodecount
  490. """
  491. args = """--mode smp -t50 -n2048 --geometry 40x40x50x50x1 /bin/ls"""
  492. cmdout = ''
  493. cmderr = \
  494. """Specifed mode 'smp' not valid, valid modes are
  495. co
  496. vn
  497. script
  498. interactive
  499. """
  500. stubout = ''
  501. stubout_file = "stub.out"
  502. expected_results = (
  503. 256, # Expected return status
  504. cmdout, # Expected command output
  505. stubout, # Expected stub functions output
  506. cmderr, # Expected command error output
  507. )
  508. testutils.save_testhook("")
  509. results = testutils.run_cmd('qsub.py',args,stubout_file)
  510. result = testutils.validate_results(results,expected_results)
  511. testutils.remove_testhook()
  512. correct = 1
  513. assert result == correct, "Result:\n%s" % result
  514. # ---------------------------------------------------------------------------------
  515. def test_qsub_invalid_geometry_1():
  516. """
  517. qsub test run: invalid_geometry_1
  518. """
  519. args = """--mode script -t50 -n10 --geometry x /bin/ls"""
  520. cmdout = ''
  521. cmderr = \
  522. """Invalid geometry entered:
  523. """
  524. stubout = ''
  525. stubout_file = "stub.out"
  526. expected_results = (
  527. 256, # Expected return status
  528. cmdout, # Expected command output
  529. stubout, # Expected stub functions output
  530. cmderr, # Expected command error output
  531. )
  532. testutils.save_testhook("")
  533. results = testutils.run_cmd('qsub.py',args,stubout_file)
  534. result = testutils.validate_results(results,expected_results)
  535. testutils.remove_testhook()
  536. correct = 1
  537. assert result == correct, "Result:\n%s" % result
  538. # ---------------------------------------------------------------------------------
  539. def test_qsub_invalid_geometry_2():
  540. """
  541. qsub test run: invalid_geometry_2
  542. """
  543. args = """--mode script -t50 -n10 --geometry 1x2x3x4 /bin/ls"""
  544. cmdout = \
  545. """1
  546. """
  547. cmderr = ''
  548. stubout = \
  549. """
  550. ADD_JOBS
  551. args:[]
  552. args type: <type 'list'>
  553. command:/bin/ls
  554. command type: <type 'str'>
  555. cwd:/tmp
  556. cwd type: <type 'str'>
  557. geometry:[1, 2, 3, 4, 2]
  558. geometry type: <type 'list'>
  559. ion_kernel:default
  560. ion_kernel type: <type 'str'>
  561. jobid:*
  562. jobid type: <type 'str'>
  563. kernel:default
  564. kernel type: <type 'str'>
  565. mode:script
  566. mode type: <type 'str'>
  567. nodes:10
  568. nodes type: <type 'int'>
  569. outputdir:/tmp
  570. outputdir type: <type 'str'>
  571. path:/tmp
  572. path type: <type 'str'>
  573. procs:512
  574. procs type: <type 'str'>
  575. queue:default
  576. queue type: <type 'str'>
  577. run_project:False
  578. run_project type: <type 'bool'>
  579. script_preboot:True
  580. script_preboot type: <type 'bool'>
  581. tag:job
  582. tag type: <type 'str'>
  583. umask:18
  584. umask type: <type 'int'>
  585. user:gooduser
  586. user type: <type 'str'>
  587. user_list:['gooduser']
  588. user_list type: <type 'list'>
  589. walltime:50
  590. walltime type: <type 'str'>
  591. VALIDATE_JOB
  592. attrs:{}
  593. attrs type: <type 'dict'>
  594. cwd:/tmp
  595. cwd type: <type 'str'>
  596. debug:False
  597. debug type: <type 'bool'>
  598. debuglog:False
  599. debuglog type: <type 'bool'>
  600. dependencies:False
  601. dependencies type: <type 'bool'>
  602. disable_preboot:False
  603. disable_preboot type: <type 'bool'>
  604. env:False
  605. env type: <type 'bool'>
  606. error:False
  607. error type: <type 'bool'>
  608. forcenoval:False
  609. forcenoval type: <type 'bool'>
  610. geometry:1x2x3x4
  611. geometry type: <type 'str'>
  612. held:False
  613. held type: <type 'bool'>
  614. inputfile:False
  615. inputfile type: <type 'bool'>
  616. interactive:False
  617. interactive type: <type 'bool'>
  618. ion_kernel:default
  619. ion_kernel type: <type 'str'>
  620. ion_kerneloptions:False
  621. ion_kerneloptions type: <type 'bool'>
  622. jobname:False
  623. jobname type: <type 'bool'>
  624. kernel:default
  625. kernel type: <type 'str'>
  626. kerneloptions:False
  627. kerneloptions type: <type 'bool'>
  628. mode:script
  629. mode type: <type 'str'>
  630. nodecount:10
  631. nodecount type: <type 'str'>
  632. notify:False
  633. notify type: <type 'bool'>
  634. output:False
  635. output type: <type 'bool'>
  636. outputprefix:False
  637. outputprefix type: <type 'bool'>
  638. preemptable:False
  639. preemptable type: <type 'bool'>
  640. proccount:False
  641. proccount type: <type 'bool'>
  642. project:False
  643. project type: <type 'bool'>
  644. queue:default
  645. queue type: <type 'str'>
  646. run_project:False
  647. run_project type: <type 'bool'>
  648. time:50
  649. time type: <type 'str'>
  650. umask:False
  651. umask type: <type 'bool'>
  652. user_list:False
  653. user_list type: <type 'bool'>
  654. verbose:False
  655. verbose type: <type 'bool'>
  656. version:False
  657. version type: <type 'bool'>
  658. """
  659. stubout_file = "stub.out"
  660. expected_results = (
  661. 0, # Expected return status
  662. cmdout, # Expected command output
  663. stubout, # Expected stub functions output
  664. cmderr, # Expected command error output
  665. )
  666. testutils.save_testhook("")
  667. results = testutils.run_cmd('qsub.py',args,stubout_file)
  668. result = testutils.validate_results(results,expected_results)
  669. testutils.remove_testhook()
  670. correct = 1
  671. assert result == correct, "Result:\n%s" % result
  672. # ---------------------------------------------------------------------------------
  673. def test_qsub_invalid_geometry_3():
  674. """
  675. qsub test run: invalid_geometry_3
  676. """
  677. args = """--mode script -t50 -n10 --geometry 1x2x3x4 /bin/ls"""
  678. cmdout = \
  679. """1
  680. """
  681. cmderr = ''
  682. stubout = \
  683. """
  684. ADD_JOBS
  685. args:[]
  686. args type: <type 'list'>
  687. command:/bin/ls
  688. command type: <type 'str'>
  689. cwd:/tmp
  690. cwd type: <type 'str'>
  691. geometry:[1, 2, 3, 4, 2]
  692. geometry type: <type 'list'>
  693. ion_kernel:default
  694. ion_kernel type: <type 'str'>
  695. jobid:*
  696. jobid type: <type 'str'>
  697. kernel:default
  698. kernel type: <type 'str'>
  699. mode:script
  700. mode type: <type 'str'>
  701. nodes:10
  702. nodes type: <type 'int'>
  703. outputdir:/tmp
  704. outputdir type: <type 'str'>
  705. path:/tmp
  706. path type: <type 'str'>
  707. procs:512
  708. procs type: <type 'str'>
  709. queue:default
  710. queue type: <type 'str'>
  711. run_project:False
  712. run_project type: <type 'bool'>
  713. script_preboot:True
  714. script_preboot type: <type 'bool'>
  715. tag:job
  716. tag type: <type 'str'>
  717. umask:18
  718. umask type: <type 'int'>
  719. user:gooduser
  720. user type: <type 'str'>
  721. user_list:['gooduser']
  722. user_list type: <type 'list'>
  723. walltime:50
  724. walltime type: <type 'str'>
  725. VALIDATE_JOB
  726. attrs:{}
  727. attrs type: <type 'dict'>
  728. cwd:/tmp
  729. cwd type: <type 'str'>
  730. debug:False
  731. debug type: <type 'bool'>
  732. debuglog:False
  733. debuglog type: <type 'bool'>
  734. dependencies:False
  735. dependencies type: <type 'bool'>
  736. disable_preboot:False
  737. disable_preboot type: <type 'bool'>
  738. env:False
  739. env type: <type 'bool'>
  740. error:False
  741. error type: <type 'bool'>
  742. forcenoval:False
  743. forcenoval type: <type 'bool'>
  744. geometry:1x2x3x4
  745. geometry type: <type 'str'>
  746. held:False
  747. held type: <type 'bool'>
  748. inputfile:False
  749. inputfile type: <type 'bool'>
  750. interactive:False
  751. interactive type: <type 'bool'>
  752. ion_kernel:default
  753. ion_kernel type: <type 'str'>
  754. ion_kerneloptions:False
  755. ion_kerneloptions type: <type 'bool'>
  756. jobname:False
  757. jobname type: <type 'bool'>
  758. kernel:default
  759. kernel type: <type 'str'>
  760. kerneloptions:False
  761. kerneloptions type: <type 'bool'>
  762. mode:script
  763. mode type: <type 'str'>
  764. nodecount:10
  765. nodecount type: <type 'str'>
  766. notify:False
  767. notify type: <type 'bool'>
  768. output:False
  769. output type: <type 'bool'>
  770. outputprefix:False
  771. outputprefix type: <type 'bool'>
  772. preemptable:False
  773. preemptable type: <type 'bool'>
  774. proccount:False
  775. proccount type: <type 'bool'>
  776. project:False
  777. project type: <type 'bool'>
  778. queue:default
  779. queue type: <type 'str'>
  780. run_project:False
  781. run_project type: <type 'bool'>
  782. time:50
  783. time type: <type 'str'>
  784. umask:False
  785. umask type: <type 'bool'>
  786. user_list:False
  787. user_list type: <type 'bool'>
  788. verbose:False
  789. verbose type: <type 'bool'>
  790. version:False
  791. version type: <type 'bool'>
  792. """
  793. stubout_file = "stub.out"
  794. expected_results = (
  795. 0, # Expected return status
  796. cmdout, # Expected command output
  797. stubout, # Expected stub functions output
  798. cmderr, # Expected command error output
  799. )
  800. testutils.save_testhook("")
  801. results = testutils.run_cmd('qsub.py',args,stubout_file)
  802. result = testutils.validate_results(results,expected_results)
  803. testutils.remove_testhook()
  804. correct = 1
  805. assert result == correct, "Result:\n%s" % result
  806. # ---------------------------------------------------------------------------------
  807. def test_qsub_invalid_geometry_4():
  808. """
  809. qsub test run: invalid_geometry_4
  810. """
  811. args = """--mode script -t50 -n10 --geometry 48x48x48x48x2 /bin/ls"""
  812. cmdout = \
  813. """1
  814. """
  815. cmderr = ''
  816. stubout = \
  817. """
  818. ADD_JOBS
  819. args:[]
  820. args type: <type 'list'>
  821. command:/bin/ls
  822. command type: <type 'str'>
  823. cwd:/tmp
  824. cwd type: <type 'str'>
  825. geometry:[48, 48, 48, 48, 2]
  826. geometry type: <type 'list'>
  827. ion_kernel:default
  828. ion_kernel type: <type 'str'>
  829. jobid:*
  830. jobid type: <type 'str'>
  831. kernel:default
  832. kernel type: <type 'str'>
  833. mode:script
  834. mode type: <type 'str'>
  835. nodes:10
  836. nodes type: <type 'int'>
  837. outputdir:/tmp
  838. outputdir type: <type 'str'>
  839. path:/tmp
  840. path type: <type 'str'>
  841. procs:512
  842. procs type: <type 'str'>
  843. queue:default
  844. queue type: <type 'str'>
  845. run_project:False
  846. run_project type: <type 'bool'>
  847. script_preboot:True
  848. script_preboot type: <type 'bool'>
  849. tag:job
  850. tag type: <type 'str'>
  851. umask:18
  852. umask type: <type 'int'>
  853. user:gooduser
  854. user type: <type 'str'>
  855. user_list:['gooduser']
  856. user_list type: <type 'list'>
  857. walltime:50
  858. walltime type: <type 'str'>
  859. VALIDATE_JOB
  860. attrs:{}
  861. attrs type: <type 'dict'>
  862. cwd:/tmp
  863. cwd type: <type 'str'>
  864. debug:False
  865. debug type: <type 'bool'>
  866. debuglog:False
  867. debuglog type: <type 'bool'>
  868. dependencies:False
  869. dependencies type: <type 'bool'>
  870. disable_preboot:False
  871. disable_preboot type: <type 'bool'>
  872. env:False
  873. env type: <type 'bool'>
  874. error:False
  875. error type: <type 'bool'>
  876. forcenoval:False
  877. forcenoval type: <type 'bool'>
  878. geometry:48x48x48x48x2
  879. geometry type: <type 'str'>
  880. held:False
  881. held type: <type 'bool'>
  882. inputfile:False
  883. inputfile type: <type 'bool'>
  884. interactive:False
  885. interactive type: <type 'bool'>
  886. ion_kernel:default
  887. ion_kernel type: <type 'str'>
  888. ion_kerneloptions:False
  889. ion_kerneloptions type: <type 'bool'>
  890. jobname:False
  891. jobname type: <type 'bool'>
  892. kernel:default
  893. kernel type: <type 'str'>
  894. kerneloptions:False
  895. kerneloptions type: <type 'bool'>
  896. mode:script
  897. mode type: <type 'str'>
  898. nodecount:10
  899. nodecount type: <type 'str'>
  900. notify:False
  901. notify type: <type 'bool'>
  902. output:False
  903. output type: <type 'bool'>
  904. outputprefix:False
  905. outputprefix type: <type 'bool'>
  906. preemptable:False
  907. preemptable type: <type 'bool'>
  908. proccount:False
  909. proccount type: <type 'bool'>
  910. project:False
  911. project type: <type 'bool'>
  912. queue:default
  913. queue type: <type 'str'>
  914. run_project:False
  915. run_project type: <type 'bool'>
  916. time:50
  917. time type: <type 'str'>
  918. umask:False
  919. umask type: <type 'bool'>
  920. user_list:False
  921. user_list type: <type 'bool'>
  922. verbose:False
  923. verbose type: <type 'bool'>
  924. version:False
  925. version type: <type 'bool'>
  926. """
  927. stubout_file = "stub.out"
  928. expected_results = (
  929. 0, # Expected return status
  930. cmdout, # Expected command output
  931. stubout, # Expected stub functions output
  932. cmderr, # Expected command error output
  933. )
  934. testutils.save_testhook("")
  935. results = testutils.run_cmd('qsub.py',args,stubout_file)
  936. result = testutils.validate_results(results,expected_results)
  937. testutils.remove_testhook()
  938. correct = 1
  939. assert result == correct, "Result:\n%s" % result
  940. # ---------------------------------------------------------------------------------
  941. def test_qsub_invalid_geometry_5():
  942. """
  943. qsub test run: invalid_geometry_5
  944. """
  945. args = """--mode script -t50 -n10 --geometry 48x48x48x48x3 /bin/ls"""
  946. cmdout = ''
  947. cmderr = \
  948. """Invalid geometry entered:
  949. """
  950. stubout = ''
  951. stubout_file = "stub.out"
  952. expected_results = (
  953. 256, # Expected return status
  954. cmdout, # Expected command output
  955. stubout, # Expected stub functions output
  956. cmderr, # Expected command error output
  957. )
  958. testutils.save_testhook("")
  959. results = testutils.run_cmd('qsub.py',args,stubout_file)
  960. result = testutils.validate_results(results,expected_results)
  961. testutils.remove_testhook()
  962. correct = 1
  963. assert result == correct, "Result:\n%s" % result
  964. # ---------------------------------------------------------------------------------
  965. def test_qsub_invalid_geometry_6():
  966. """
  967. qsub test run: invalid_geometry_6
  968. """
  969. args = """--mode script -t50 -n10 --geometry 128x64x32x4 /bin/ls"""
  970. cmdout = \
  971. """1
  972. """
  973. cmderr = ''
  974. stubout = \
  975. """
  976. ADD_JOBS
  977. args:[]
  978. args type: <type 'list'>
  979. command:/bin/ls
  980. command type: <type 'str'>
  981. cwd:/tmp
  982. cwd type: <type 'str'>
  983. geometry:[128, 64, 32, 4, 2]
  984. geometry type: <type 'list'>
  985. ion_kernel:default
  986. ion_kernel type: <type 'str'>
  987. jobid:*
  988. jobid type: <type 'str'>
  989. kernel:default
  990. kernel type: <type 'str'>
  991. mode:script
  992. mode type: <type 'str'>
  993. nodes:10
  994. nodes type: <type 'int'>
  995. outputdir:/tmp
  996. outputdir type: <type 'str'>
  997. path:/tmp
  998. path type: <type 'str'>
  999. procs:512
  1000. procs type: <type 'str'>
  1001. queue:default
  1002. queue type: <type 'str'>
  1003. run_project:False
  1004. run_project type: <type 'bool'>
  1005. script_preboot:True
  1006. script_preboot type: <type 'bool'>
  1007. tag:job
  1008. tag type: <type 'str'>
  1009. umask:18
  1010. umask type: <type 'int'>
  1011. user:gooduser
  1012. user type: <type 'str'>
  1013. user_list:['gooduser']
  1014. user_list type: <type 'list'>
  1015. walltime:50
  1016. walltime type: <type 'str'>
  1017. VALIDATE_JOB
  1018. attrs:{}
  1019. attrs type: <type 'dict'>
  1020. cwd:/tmp
  1021. cwd type: <type 'str'>
  1022. debug:False
  1023. debug type: <type 'bool'>
  1024. debuglog:False
  1025. debuglog type: <type 'bool'>
  1026. dependencies:False
  1027. dependencies type: <type 'bool'>
  1028. disable_preboot:False
  1029. disable_preboot type: <type 'bool'>
  1030. env:False
  1031. env type: <type 'bool'>
  1032. error:False
  1033. error type: <type 'bool'>
  1034. forcenoval:False
  1035. forcenoval type: <type 'bool'>
  1036. geometry:128x64x32x4
  1037. geometry type: <type 'str'>
  1038. held:False
  1039. held type: <type 'bool'>
  1040. inputfile:False
  1041. inputfile type: <type 'bool'>
  1042. interactive:False
  1043. interactive type: <type 'bool'>
  1044. ion_kernel:default
  1045. ion_kernel type: <type 'str'>
  1046. ion_kerneloptions:False
  1047. ion_kerneloptions type: <type 'bool'>
  1048. jobname:False
  1049. jobname type: <type 'bool'>
  1050. kernel:default
  1051. kernel type: <type 'str'>
  1052. kerneloptions:False
  1053. kerneloptions type: <type 'bool'>
  1054. mode:script
  1055. mode type: <type 'str'>
  1056. nodecount:10
  1057. nodecount type: <type 'str'>
  1058. notify:False
  1059. notify type: <type 'bool'>
  1060. output:False
  1061. output type: <type 'bool'>
  1062. outputprefix:False
  1063. outputprefix type: <type 'bool'>
  1064. preemptable:False
  1065. preemptable type: <type 'bool'>
  1066. proccount:False
  1067. proccount type: <type 'bool'>
  1068. project:False
  1069. project type: <type 'bool'>
  1070. queue:default
  1071. queue type: <type 'str'>
  1072. run_project:False
  1073. run_project type: <type 'bool'>
  1074. time:50
  1075. time type: <type 'str'>
  1076. umask:False
  1077. umask type: <type 'bool'>
  1078. user_list:False
  1079. user_list type: <type 'bool'>
  1080. verbose:False
  1081. verbose type: <type 'bool'>
  1082. version:False
  1083. version type: <type 'bool'>
  1084. """
  1085. stubout_file = "stub.out"
  1086. expected_results = (
  1087. 0, # Expected return status
  1088. cmdout, # Expected command output
  1089. stubout, # Expected stub functions output
  1090. cmderr, # Expected command error output
  1091. )
  1092. testutils.save_testhook("")
  1093. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1094. result = testutils.validate_results(results,expected_results)
  1095. testutils.remove_testhook()
  1096. correct = 1
  1097. assert result == correct, "Result:\n%s" % result
  1098. # ---------------------------------------------------------------------------------
  1099. def test_qsub_no_roject_specified():
  1100. """
  1101. qsub test run: no_roject_specified
  1102. """
  1103. args = """-A -t50 -n10 /bin/ls"""
  1104. cmdout = ''
  1105. cmderr = \
  1106. """'time' not provided
  1107. """
  1108. stubout = ''
  1109. stubout_file = "stub.out"
  1110. expected_results = (
  1111. 256, # Expected return status
  1112. cmdout, # Expected command output
  1113. stubout, # Expected stub functions output
  1114. cmderr, # Expected command error output
  1115. )
  1116. testutils.save_testhook("")
  1117. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1118. result = testutils.validate_results(results,expected_results)
  1119. testutils.remove_testhook()
  1120. correct = 1
  1121. assert result == correct, "Result:\n%s" % result
  1122. # ---------------------------------------------------------------------------------
  1123. def test_qsub_project_specified():
  1124. """
  1125. qsub test run: project_specified
  1126. """
  1127. args = """-A who -t50 -n10 /bin/ls"""
  1128. cmdout = \
  1129. """1
  1130. """
  1131. cmderr = ''
  1132. stubout = \
  1133. """
  1134. ADD_JOBS
  1135. args:[]
  1136. args type: <type 'list'>
  1137. command:/bin/ls
  1138. command type: <type 'str'>
  1139. cwd:/tmp
  1140. cwd type: <type 'str'>
  1141. ion_kernel:default
  1142. ion_kernel type: <type 'str'>
  1143. jobid:*
  1144. jobid type: <type 'str'>
  1145. kernel:default
  1146. kernel type: <type 'str'>
  1147. mode:c1
  1148. mode type: <type 'str'>
  1149. nodes:10
  1150. nodes type: <type 'int'>
  1151. outputdir:/tmp
  1152. outputdir type: <type 'str'>
  1153. path:/tmp
  1154. path type: <type 'str'>
  1155. procs:512
  1156. procs type: <type 'str'>
  1157. project:who
  1158. project type: <type 'str'>
  1159. queue:default
  1160. queue type: <type 'str'>
  1161. run_project:False
  1162. run_project type: <type 'bool'>
  1163. script_preboot:True
  1164. script_preboot type: <type 'bool'>
  1165. tag:job
  1166. tag type: <type 'str'>
  1167. umask:18
  1168. umask type: <type 'int'>
  1169. user:gooduser
  1170. user type: <type 'str'>
  1171. user_list:['gooduser']
  1172. user_list type: <type 'list'>
  1173. walltime:50
  1174. walltime type: <type 'str'>
  1175. VALIDATE_JOB
  1176. attrs:{}
  1177. attrs type: <type 'dict'>
  1178. cwd:/tmp
  1179. cwd type: <type 'str'>
  1180. debug:False
  1181. debug type: <type 'bool'>
  1182. debuglog:False
  1183. debuglog type: <type 'bool'>
  1184. dependencies:False
  1185. dependencies type: <type 'bool'>
  1186. disable_preboot:False
  1187. disable_preboot type: <type 'bool'>
  1188. env:False
  1189. env type: <type 'bool'>
  1190. error:False
  1191. error type: <type 'bool'>
  1192. forcenoval:False
  1193. forcenoval type: <type 'bool'>
  1194. geometry:False
  1195. geometry type: <type 'bool'>
  1196. held:False
  1197. held type: <type 'bool'>
  1198. inputfile:False
  1199. inputfile type: <type 'bool'>
  1200. interactive:False
  1201. interactive type: <type 'bool'>
  1202. ion_kernel:default
  1203. ion_kernel type: <type 'str'>
  1204. ion_kerneloptions:False
  1205. ion_kerneloptions type: <type 'bool'>
  1206. jobname:False
  1207. jobname type: <type 'bool'>
  1208. kernel:default
  1209. kernel type: <type 'str'>
  1210. kerneloptions:False
  1211. kerneloptions type: <type 'bool'>
  1212. mode:False
  1213. mode type: <type 'bool'>
  1214. nodecount:10
  1215. nodecount type: <type 'str'>
  1216. notify:False
  1217. notify type: <type 'bool'>
  1218. output:False
  1219. output type: <type 'bool'>
  1220. outputprefix:False
  1221. outputprefix type: <type 'bool'>
  1222. preemptable:False
  1223. preemptable type: <type 'bool'>
  1224. proccount:False
  1225. proccount type: <type 'bool'>
  1226. project:who
  1227. project type: <type 'str'>
  1228. queue:default
  1229. queue type: <type 'str'>
  1230. run_project:False
  1231. run_project type: <type 'bool'>
  1232. time:50
  1233. time type: <type 'str'>
  1234. umask:False
  1235. umask type: <type 'bool'>
  1236. user_list:False
  1237. user_list type: <type 'bool'>
  1238. verbose:False
  1239. verbose type: <type 'bool'>
  1240. version:False
  1241. version type: <type 'bool'>
  1242. """
  1243. stubout_file = "stub.out"
  1244. expected_results = (
  1245. 0, # Expected return status
  1246. cmdout, # Expected command output
  1247. stubout, # Expected stub functions output
  1248. cmderr, # Expected command error output
  1249. )
  1250. testutils.save_testhook("")
  1251. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1252. result = testutils.validate_results(results,expected_results)
  1253. testutils.remove_testhook()
  1254. correct = 1
  1255. assert result == correct, "Result:\n%s" % result
  1256. # ---------------------------------------------------------------------------------
  1257. def test_qsub_Check_attrs_1():
  1258. """
  1259. qsub test run: Check_attrs_1
  1260. """
  1261. args = """--attrs xxxx -t50 -n10 /bin/ls"""
  1262. cmdout = \
  1263. """1
  1264. """
  1265. cmderr = ''
  1266. stubout = \
  1267. """
  1268. ADD_JOBS
  1269. args:[]
  1270. args type: <type 'list'>
  1271. attrs:{'xxxx': 'true'}
  1272. attrs type: <type 'dict'>
  1273. command:/bin/ls
  1274. command type: <type 'str'>
  1275. cwd:/tmp
  1276. cwd type: <type 'str'>
  1277. ion_kernel:default
  1278. ion_kernel type: <type 'str'>
  1279. jobid:*
  1280. jobid type: <type 'str'>
  1281. kernel:default
  1282. kernel type: <type 'str'>
  1283. mode:c1
  1284. mode type: <type 'str'>
  1285. nodes:10
  1286. nodes type: <type 'int'>
  1287. outputdir:/tmp
  1288. outputdir type: <type 'str'>
  1289. path:/tmp
  1290. path type: <type 'str'>
  1291. procs:512
  1292. procs type: <type 'str'>
  1293. queue:default
  1294. queue type: <type 'str'>
  1295. run_project:False
  1296. run_project type: <type 'bool'>
  1297. script_preboot:True
  1298. script_preboot type: <type 'bool'>
  1299. tag:job
  1300. tag type: <type 'str'>
  1301. umask:18
  1302. umask type: <type 'int'>
  1303. user:gooduser
  1304. user type: <type 'str'>
  1305. user_list:['gooduser']
  1306. user_list type: <type 'list'>
  1307. walltime:50
  1308. walltime type: <type 'str'>
  1309. VALIDATE_JOB
  1310. attrs:{'xxxx': 'true'}
  1311. attrs type: <type 'dict'>
  1312. cwd:/tmp
  1313. cwd type: <type 'str'>
  1314. debug:False
  1315. debug type: <type 'bool'>
  1316. debuglog:False
  1317. debuglog type: <type 'bool'>
  1318. dependencies:False
  1319. dependencies type: <type 'bool'>
  1320. disable_preboot:False
  1321. disable_preboot type: <type 'bool'>
  1322. env:False
  1323. env type: <type 'bool'>
  1324. error:False
  1325. error type: <type 'bool'>
  1326. forcenoval:False
  1327. forcenoval type: <type 'bool'>
  1328. geometry:False
  1329. geometry type: <type 'bool'>
  1330. held:False
  1331. held type: <type 'bool'>
  1332. inputfile:False
  1333. inputfile type: <type 'bool'>
  1334. interactive:False
  1335. interactive type: <type 'bool'>
  1336. ion_kernel:default
  1337. ion_kernel type: <type 'str'>
  1338. ion_kerneloptions:False
  1339. ion_kerneloptions type: <type 'bool'>
  1340. jobname:False
  1341. jobname type: <type 'bool'>
  1342. kernel:default
  1343. kernel type: <type 'str'>
  1344. kerneloptions:False
  1345. kerneloptions type: <type 'bool'>
  1346. mode:False
  1347. mode type: <type 'bool'>
  1348. nodecount:10
  1349. nodecount type: <type 'str'>
  1350. notify:False
  1351. notify type: <type 'bool'>
  1352. output:False
  1353. output type: <type 'bool'>
  1354. outputprefix:False
  1355. outputprefix type: <type 'bool'>
  1356. preemptable:False
  1357. preemptable type: <type 'bool'>
  1358. proccount:False
  1359. proccount type: <type 'bool'>
  1360. project:False
  1361. project type: <type 'bool'>
  1362. queue:default
  1363. queue type: <type 'str'>
  1364. run_project:False
  1365. run_project type: <type 'bool'>
  1366. time:50
  1367. time type: <type 'str'>
  1368. umask:False
  1369. umask type: <type 'bool'>
  1370. user_list:False
  1371. user_list type: <type 'bool'>
  1372. verbose:False
  1373. verbose type: <type 'bool'>
  1374. version:False
  1375. version type: <type 'bool'>
  1376. """
  1377. stubout_file = "stub.out"
  1378. expected_results = (
  1379. 0, # Expected return status
  1380. cmdout, # Expected command output
  1381. stubout, # Expected stub functions output
  1382. cmderr, # Expected command error output
  1383. )
  1384. testutils.save_testhook("")
  1385. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1386. result = testutils.validate_results(results,expected_results)
  1387. testutils.remove_testhook()
  1388. correct = 1
  1389. assert result == correct, "Result:\n%s" % result
  1390. # ---------------------------------------------------------------------------------
  1391. def test_qsub_Check_attrs_2():
  1392. """
  1393. qsub test run: Check_attrs_2
  1394. """
  1395. args = """--attrs 1111 -t50 -n10 /bin/ls"""
  1396. cmdout = \
  1397. """1
  1398. """
  1399. cmderr = ''
  1400. stubout = \
  1401. """
  1402. ADD_JOBS
  1403. args:[]
  1404. args type: <type 'list'>
  1405. attrs:{'1111': 'true'}
  1406. attrs type: <type 'dict'>
  1407. command:/bin/ls
  1408. command type: <type 'str'>
  1409. cwd:/tmp
  1410. cwd type: <type 'str'>
  1411. ion_kernel:default
  1412. ion_kernel type: <type 'str'>
  1413. jobid:*
  1414. jobid type: <type 'str'>
  1415. kernel:default
  1416. kernel type: <type 'str'>
  1417. mode:c1
  1418. mode type: <type 'str'>
  1419. nodes:10
  1420. nodes type: <type 'int'>
  1421. outputdir:/tmp
  1422. outputdir type: <type 'str'>
  1423. path:/tmp
  1424. path type: <type 'str'>
  1425. procs:512
  1426. procs type: <type 'str'>
  1427. queue:default
  1428. queue type: <type 'str'>
  1429. run_project:False
  1430. run_project type: <type 'bool'>
  1431. script_preboot:True
  1432. script_preboot type: <type 'bool'>
  1433. tag:job
  1434. tag type: <type 'str'>
  1435. umask:18
  1436. umask type: <type 'int'>
  1437. user:gooduser
  1438. user type: <type 'str'>
  1439. user_list:['gooduser']
  1440. user_list type: <type 'list'>
  1441. walltime:50
  1442. walltime type: <type 'str'>
  1443. VALIDATE_JOB
  1444. attrs:{'1111': 'true'}
  1445. attrs type: <type 'dict'>
  1446. cwd:/tmp
  1447. cwd type: <type 'str'>
  1448. debug:False
  1449. debug type: <type 'bool'>
  1450. debuglog:False
  1451. debuglog type: <type 'bool'>
  1452. dependencies:False
  1453. dependencies type: <type 'bool'>
  1454. disable_preboot:False
  1455. disable_preboot type: <type 'bool'>
  1456. env:False
  1457. env type: <type 'bool'>
  1458. error:False
  1459. error type: <type 'bool'>
  1460. forcenoval:False
  1461. forcenoval type: <type 'bool'>
  1462. geometry:False
  1463. geometry type: <type 'bool'>
  1464. held:False
  1465. held type: <type 'bool'>
  1466. inputfile:False
  1467. inputfile type: <type 'bool'>
  1468. interactive:False
  1469. interactive type: <type 'bool'>
  1470. ion_kernel:default
  1471. ion_kernel type: <type 'str'>
  1472. ion_kerneloptions:False
  1473. ion_kerneloptions type: <type 'bool'>
  1474. jobname:False
  1475. jobname type: <type 'bool'>
  1476. kernel:default
  1477. kernel type: <type 'str'>
  1478. kerneloptions:False
  1479. kerneloptions type: <type 'bool'>
  1480. mode:False
  1481. mode type: <type 'bool'>
  1482. nodecount:10
  1483. nodecount type: <type 'str'>
  1484. notify:False
  1485. notify type: <type 'bool'>
  1486. output:False
  1487. output type: <type 'bool'>
  1488. outputprefix:False
  1489. outputprefix type: <type 'bool'>
  1490. preemptable:False
  1491. preemptable type: <type 'bool'>
  1492. proccount:False
  1493. proccount type: <type 'bool'>
  1494. project:False
  1495. project type: <type 'bool'>
  1496. queue:default
  1497. queue type: <type 'str'>
  1498. run_project:False
  1499. run_project type: <type 'bool'>
  1500. time:50
  1501. time type: <type 'str'>
  1502. umask:False
  1503. umask type: <type 'bool'>
  1504. user_list:False
  1505. user_list type: <type 'bool'>
  1506. verbose:False
  1507. verbose type: <type 'bool'>
  1508. version:False
  1509. version type: <type 'bool'>
  1510. """
  1511. stubout_file = "stub.out"
  1512. expected_results = (
  1513. 0, # Expected return status
  1514. cmdout, # Expected command output
  1515. stubout, # Expected stub functions output
  1516. cmderr, # Expected command error output
  1517. )
  1518. testutils.save_testhook("")
  1519. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1520. result = testutils.validate_results(results,expected_results)
  1521. testutils.remove_testhook()
  1522. correct = 1
  1523. assert result == correct, "Result:\n%s" % result
  1524. # ---------------------------------------------------------------------------------
  1525. def test_qsub_Check_attrs_3():
  1526. """
  1527. qsub test run: Check_attrs_3
  1528. """
  1529. args = """--attrs xx=:yy -t50 -n10 /bin/ls"""
  1530. cmdout = \
  1531. """1
  1532. """
  1533. cmderr = ''
  1534. stubout = \
  1535. """
  1536. ADD_JOBS
  1537. args:[]
  1538. args type: <type 'list'>
  1539. attrs:{'yy': 'true', 'xx': ''}
  1540. attrs type: <type 'dict'>
  1541. command:/bin/ls
  1542. command type: <type 'str'>
  1543. cwd:/tmp
  1544. cwd type: <type 'str'>
  1545. ion_kernel:default
  1546. ion_kernel type: <type 'str'>
  1547. jobid:*
  1548. jobid type: <type 'str'>
  1549. kernel:default
  1550. kernel type: <type 'str'>
  1551. mode:c1
  1552. mode type: <type 'str'>
  1553. nodes:10
  1554. nodes type: <type 'int'>
  1555. outputdir:/tmp
  1556. outputdir type: <type 'str'>
  1557. path:/tmp
  1558. path type: <type 'str'>
  1559. procs:512
  1560. procs type: <type 'str'>
  1561. queue:default
  1562. queue type: <type 'str'>
  1563. run_project:False
  1564. run_project type: <type 'bool'>
  1565. script_preboot:True
  1566. script_preboot type: <type 'bool'>
  1567. tag:job
  1568. tag type: <type 'str'>
  1569. umask:18
  1570. umask type: <type 'int'>
  1571. user:gooduser
  1572. user type: <type 'str'>
  1573. user_list:['gooduser']
  1574. user_list type: <type 'list'>
  1575. walltime:50
  1576. walltime type: <type 'str'>
  1577. VALIDATE_JOB
  1578. attrs:{'yy': 'true', 'xx': ''}
  1579. attrs type: <type 'dict'>
  1580. cwd:/tmp
  1581. cwd type: <type 'str'>
  1582. debug:False
  1583. debug type: <type 'bool'>
  1584. debuglog:False
  1585. debuglog type: <type 'bool'>
  1586. dependencies:False
  1587. dependencies type: <type 'bool'>
  1588. disable_preboot:False
  1589. disable_preboot type: <type 'bool'>
  1590. env:False
  1591. env type: <type 'bool'>
  1592. error:False
  1593. error type: <type 'bool'>
  1594. forcenoval:False
  1595. forcenoval type: <type 'bool'>
  1596. geometry:False
  1597. geometry type: <type 'bool'>
  1598. held:False
  1599. held type: <type 'bool'>
  1600. inputfile:False
  1601. inputfile type: <type 'bool'>
  1602. interactive:False
  1603. interactive type: <type 'bool'>
  1604. ion_kernel:default
  1605. ion_kernel type: <type 'str'>
  1606. ion_kerneloptions:False
  1607. ion_kerneloptions type: <type 'bool'>
  1608. jobname:False
  1609. jobname type: <type 'bool'>
  1610. kernel:default
  1611. kernel type: <type 'str'>
  1612. kerneloptions:False
  1613. kerneloptions type: <type 'bool'>
  1614. mode:False
  1615. mode type: <type 'bool'>
  1616. nodecount:10
  1617. nodecount type: <type 'str'>
  1618. notify:False
  1619. notify type: <type 'bool'>
  1620. output:False
  1621. output type: <type 'bool'>
  1622. outputprefix:False
  1623. outputprefix type: <type 'bool'>
  1624. preemptable:False
  1625. preemptable type: <type 'bool'>
  1626. proccount:False
  1627. proccount type: <type 'bool'>
  1628. project:False
  1629. project type: <type 'bool'>
  1630. queue:default
  1631. queue type: <type 'str'>
  1632. run_project:False
  1633. run_project type: <type 'bool'>
  1634. time:50
  1635. time type: <type 'str'>
  1636. umask:False
  1637. umask type: <type 'bool'>
  1638. user_list:False
  1639. user_list type: <type 'bool'>
  1640. verbose:False
  1641. verbose type: <type 'bool'>
  1642. version:False
  1643. version type: <type 'bool'>
  1644. """
  1645. stubout_file = "stub.out"
  1646. expected_results = (
  1647. 0, # Expected return status
  1648. cmdout, # Expected command output
  1649. stubout, # Expected stub functions output
  1650. cmderr, # Expected command error output
  1651. )
  1652. testutils.save_testhook("")
  1653. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1654. result = testutils.validate_results(results,expected_results)
  1655. testutils.remove_testhook()
  1656. correct = 1
  1657. assert result == correct, "Result:\n%s" % result
  1658. # ---------------------------------------------------------------------------------
  1659. def test_qsub_Check_attrs_4():
  1660. """
  1661. qsub test run: Check_attrs_4
  1662. """
  1663. args = """--attrs xx=one:yy=1:zz=1one -t50 -n10 /bin/ls"""
  1664. cmdout = \
  1665. """1
  1666. """
  1667. cmderr = ''
  1668. stubout = \
  1669. """
  1670. ADD_JOBS
  1671. args:[]
  1672. args type: <type 'list'>
  1673. attrs:{'yy': '1', 'xx': 'one', 'zz': '1one'}
  1674. attrs type: <type 'dict'>
  1675. command:/bin/ls
  1676. command type: <type 'str'>
  1677. cwd:/tmp
  1678. cwd type: <type 'str'>
  1679. ion_kernel:default
  1680. ion_kernel type: <type 'str'>
  1681. jobid:*
  1682. jobid type: <type 'str'>
  1683. kernel:default
  1684. kernel type: <type 'str'>
  1685. mode:c1
  1686. mode type: <type 'str'>
  1687. nodes:10
  1688. nodes type: <type 'int'>
  1689. outputdir:/tmp
  1690. outputdir type: <type 'str'>
  1691. path:/tmp
  1692. path type: <type 'str'>
  1693. procs:512
  1694. procs type: <type 'str'>
  1695. queue:default
  1696. queue type: <type 'str'>
  1697. run_project:False
  1698. run_project type: <type 'bool'>
  1699. script_preboot:True
  1700. script_preboot type: <type 'bool'>
  1701. tag:job
  1702. tag type: <type 'str'>
  1703. umask:18
  1704. umask type: <type 'int'>
  1705. user:gooduser
  1706. user type: <type 'str'>
  1707. user_list:['gooduser']
  1708. user_list type: <type 'list'>
  1709. walltime:50
  1710. walltime type: <type 'str'>
  1711. VALIDATE_JOB
  1712. attrs:{'yy': '1', 'xx': 'one', 'zz': '1one'}
  1713. attrs type: <type 'dict'>
  1714. cwd:/tmp
  1715. cwd type: <type 'str'>
  1716. debug:False
  1717. debug type: <type 'bool'>
  1718. debuglog:False
  1719. debuglog type: <type 'bool'>
  1720. dependencies:False
  1721. dependencies type: <type 'bool'>
  1722. disable_preboot:False
  1723. disable_preboot type: <type 'bool'>
  1724. env:False
  1725. env type: <type 'bool'>
  1726. error:False
  1727. error type: <type 'bool'>
  1728. forcenoval:False
  1729. forcenoval type: <type 'bool'>
  1730. geometry:False
  1731. geometry type: <type 'bool'>
  1732. held:False
  1733. held type: <type 'bool'>
  1734. inputfile:False
  1735. inputfile type: <type 'bool'>
  1736. interactive:False
  1737. interactive type: <type 'bool'>
  1738. ion_kernel:default
  1739. ion_kernel type: <type 'str'>
  1740. ion_kerneloptions:False
  1741. ion_kerneloptions type: <type 'bool'>
  1742. jobname:False
  1743. jobname type: <type 'bool'>
  1744. kernel:default
  1745. kernel type: <type 'str'>
  1746. kerneloptions:False
  1747. kerneloptions type: <type 'bool'>
  1748. mode:False
  1749. mode type: <type 'bool'>
  1750. nodecount:10
  1751. nodecount type: <type 'str'>
  1752. notify:False
  1753. notify type: <type 'bool'>
  1754. output:False
  1755. output type: <type 'bool'>
  1756. outputprefix:False
  1757. outputprefix type: <type 'bool'>
  1758. preemptable:False
  1759. preemptable type: <type 'bool'>
  1760. proccount:False
  1761. proccount type: <type 'bool'>
  1762. project:False
  1763. project type: <type 'bool'>
  1764. queue:default
  1765. queue type: <type 'str'>
  1766. run_project:False
  1767. run_project type: <type 'bool'>
  1768. time:50
  1769. time type: <type 'str'>
  1770. umask:False
  1771. umask type: <type 'bool'>
  1772. user_list:False
  1773. user_list type: <type 'bool'>
  1774. verbose:False
  1775. verbose type: <type 'bool'>
  1776. version:False
  1777. version type: <type 'bool'>
  1778. """
  1779. stubout_file = "stub.out"
  1780. expected_results = (
  1781. 0, # Expected return status
  1782. cmdout, # Expected command output
  1783. stubout, # Expected stub functions output
  1784. cmderr, # Expected command error output
  1785. )
  1786. testutils.save_testhook("")
  1787. results = testutils.run_cmd('qsub.py',args,stubout_file)
  1788. result = testutils.validate_results(results,expected_results)
  1789. testutils.remove_testhook()
  1790. correct = 1
  1791. assert result == correct, "Result:\n%s" % result
  1792. # ---------------------------------------------------------------------------------
  1793. def test_qsub_cwd_option_1():
  1794. """
  1795. qsub test run: cwd_option_1
  1796. """
  1797. args = """--cwd /tmp/ -t10 -n 10 -e p /bin/ls"""
  1798. cmdout = \
  1799. """1
  1800. """
  1801. cmderr = ''
  1802. stubout = \
  1803. """
  1804. ADD_JOBS
  1805. args:[]
  1806. args type: <type 'list'>
  1807. command:/bin/ls
  1808. command type: <type 'str'>
  1809. cwd:/tmp/
  1810. cwd type: <type 'str'>
  1811. errorpath:/tmp//p
  1812. errorpath type: <type 'str'>
  1813. ion_kernel:default
  1814. ion_kernel type: <type 'str'>
  1815. jobid:*
  1816. jobid type: <type 'str'>
  1817. kernel:default
  1818. kernel type: <type 'str'>
  1819. mode:c1
  1820. mode type: <type 'str'>
  1821. nodes:10
  1822. nodes type: <type 'int'>
  1823. outputdir:/tmp/
  1824. outputdir type: <type 'str'>
  1825. path:/tmp
  1826. path type: <type 'str'>
  1827. procs:512
  1828. procs type: <type 'str'>
  1829. queue:default
  1830. queue type: <type 'str'>
  1831. run_project:False
  1832. run_project type: <type 'bool'>
  1833. script_preboot:True
  1834. script_preboot type: <type 'bool'>
  1835. tag:job
  1836. tag type: <type 'str'>
  1837. umask:18
  1838. umask type: <type 'int'>
  1839. user:gooduser
  1840. user type: <type 'str'>
  1841. user_list:['gooduser']
  1842. user_list type: <type 'list'>
  1843. walltime:10
  1844. walltime type: <type 'str'>
  1845. VALIDATE_JOB
  1846. attrs:{}
  1847. attrs type: <type 'dict'>
  1848. cwd:/tmp/
  1849. cwd type: <type 'str'>
  1850. debug:False
  1851. debug type: <type 'bool'>
  1852. debuglog:False
  1853. debuglog type: <type 'bool'>
  1854. dependencies:False
  1855. dependencies type: <type 'bool'>
  1856. disable_preboot:False
  1857. disable_preboot type: <type 'bool'>
  1858. env:False
  1859. env type: <type 'bool'>
  1860. error:p
  1861. error type: <type 'str'>
  1862. forcenoval:False
  1863. forcenoval type: <type 'bool'>
  1864. geometry:False
  1865. geometry type: <type 'bool'>
  1866. held:False
  1867. held type: <type 'bool'>
  1868. inputfile:False
  1869. inputfile type: <type 'bool'>
  1870. interactive:False
  1871. interactive type: <type 'bool'>
  1872. ion_kernel:default
  1873. ion_kernel type: <type 'str'>
  1874. ion_kerneloptions:False
  1875. ion_kerneloptions type: <type 'bool'>
  1876. jobname:False
  1877. jobname type: <type 'bool'>
  1878. kernel:de

Large files files are truncated, but you can click here to view the full file