BUILD 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. load("@rules_python//python:defs.bzl", "py_library", "py_runtime", "py_runtime_pair", "py_test")
  2. load("@rules_python//python:pip.bzl", "compile_pip_requirements")
  3. load("@py_deps_buildkite//:requirements.bzl", bk_require = "requirement")
  4. load("@python3_9//:defs.bzl", bk_python = "interpreter")
  5. compile_pip_requirements(
  6. name = "requirements_buildkite",
  7. requirements_in = "requirements_buildkite.in",
  8. requirements_txt = "requirements_buildkite.txt",
  9. tags = [
  10. "team:ci",
  11. ],
  12. visibility = ["//visibility:private"],
  13. )
  14. compile_pip_requirements(
  15. name = "requirements_byod",
  16. requirements_in = "ray_release/byod/requirements_byod.in",
  17. requirements_txt = "ray_release/byod/requirements_byod.txt",
  18. tags = [
  19. "team:ci",
  20. ],
  21. visibility = ["//visibility:private"],
  22. )
  23. test_srcs = glob(["**/*.py"])
  24. ####
  25. # SERVE smoke tests
  26. ####
  27. py_test(
  28. name = "serve_failure_smoke_test",
  29. size = "medium",
  30. srcs = test_srcs,
  31. env = {
  32. "RAY_UNIT_TEST": "1",
  33. },
  34. main = "serve_failure.py",
  35. tags = [
  36. "exclusive",
  37. "team:serve",
  38. ],
  39. deps = [
  40. "//:ray_lib",
  41. "//python/ray/serve:serve_lib",
  42. ],
  43. )
  44. py_test(
  45. name = "single_deployment_1k_noop_replica_smoke_test",
  46. size = "medium",
  47. srcs = test_srcs,
  48. env = {
  49. "IS_SMOKE_TEST": "1",
  50. },
  51. main = "single_deployment_1k_noop_replica.py",
  52. tags = [
  53. "exclusive",
  54. "team:serve",
  55. ],
  56. deps = [
  57. "//:ray_lib",
  58. "//python/ray/serve:serve_lib",
  59. ],
  60. )
  61. py_test(
  62. name = "multi_deployment_1k_noop_replica_smoke_test",
  63. size = "medium",
  64. srcs = test_srcs,
  65. env = {
  66. "IS_SMOKE_TEST": "1",
  67. },
  68. main = "multi_deployment_1k_noop_replica.py",
  69. tags = [
  70. "exclusive",
  71. "team:serve",
  72. ],
  73. deps = [
  74. "//:ray_lib",
  75. "//python/ray/serve:serve_lib",
  76. ],
  77. )
  78. py_test(
  79. name = "deployment_graph_long_chain",
  80. size = "medium",
  81. srcs = test_srcs,
  82. env = {
  83. "IS_SMOKE_TEST": "1",
  84. },
  85. main = "deployment_graph_long_chain.py",
  86. tags = [
  87. "exclusive",
  88. "team:serve",
  89. ],
  90. deps = [
  91. "//:ray_lib",
  92. "//python/ray/serve:serve_lib",
  93. ],
  94. )
  95. py_test(
  96. name = "deployment_graph_wide_ensemble",
  97. size = "medium",
  98. srcs = test_srcs,
  99. env = {
  100. "IS_SMOKE_TEST": "1",
  101. },
  102. main = "deployment_graph_wide_ensemble.py",
  103. tags = [
  104. "exclusive",
  105. "team:serve",
  106. ],
  107. deps = [
  108. "//:ray_lib",
  109. "//python/ray/serve:serve_lib",
  110. ],
  111. )
  112. py_test(
  113. name = "serve_handle_long_chain",
  114. size = "medium",
  115. srcs = test_srcs,
  116. env = {
  117. "IS_SMOKE_TEST": "1",
  118. },
  119. main = "serve_handle_long_chain.py",
  120. tags = [
  121. "exclusive",
  122. "team:serve",
  123. ],
  124. deps = [
  125. "//:ray_lib",
  126. "//python/ray/serve:serve_lib",
  127. ],
  128. )
  129. py_test(
  130. name = "serve_handle_wide_ensemble",
  131. size = "medium",
  132. srcs = test_srcs,
  133. env = {
  134. "IS_SMOKE_TEST": "1",
  135. },
  136. main = "serve_handle_wide_ensemble.py",
  137. tags = [
  138. "exclusive",
  139. "team:serve",
  140. ],
  141. deps = [
  142. "//:ray_lib",
  143. "//python/ray/serve:serve_lib",
  144. ],
  145. )
  146. py_test(
  147. name = "autoscaling_single_deployment_smoke_test",
  148. size = "medium",
  149. srcs = test_srcs,
  150. env = {
  151. "IS_SMOKE_TEST": "1",
  152. },
  153. main = "autoscaling_single_deployment.py",
  154. tags = [
  155. "exclusive",
  156. "team:serve",
  157. ],
  158. deps = [
  159. "//:ray_lib",
  160. "//python/ray/serve:serve_lib",
  161. ],
  162. )
  163. py_test(
  164. name = "autoscaling_multi_deployment_smoke_test",
  165. size = "medium",
  166. srcs = test_srcs,
  167. env = {
  168. "IS_SMOKE_TEST": "1",
  169. },
  170. main = "autoscaling_multi_deployment.py",
  171. tags = [
  172. "exclusive",
  173. "team:serve",
  174. ],
  175. deps = [
  176. "//:ray_lib",
  177. "//python/ray/serve:serve_lib",
  178. ],
  179. )
  180. py_test(
  181. name = "tune_serve_golden_notebook_client_smoke_test",
  182. size = "medium",
  183. srcs = test_srcs,
  184. env = {
  185. "IS_SMOKE_TEST": "1",
  186. },
  187. main = "golden_notebook_tests/workloads/torch_tune_serve_test.py",
  188. tags = [
  189. "exclusive",
  190. "team:serve",
  191. ],
  192. deps = [
  193. "//:ray_lib",
  194. "//python/ray/serve:serve_lib",
  195. ],
  196. )
  197. ####
  198. # AIR smoke tests
  199. ####
  200. py_test(
  201. name = "air_benchmark_xgboost_smoke_test",
  202. size = "small",
  203. srcs = test_srcs,
  204. args = ["--smoke-test"],
  205. main = "air_tests/air_benchmarks/workloads/xgboost_benchmark.py",
  206. tags = [
  207. "exclusive",
  208. "team:ml",
  209. ],
  210. deps = [
  211. "//:ray_lib",
  212. "//python/ray/air:ml_lib",
  213. ],
  214. )
  215. py_test(
  216. name = "air_benchmark_data_smoke_test",
  217. size = "small",
  218. srcs = test_srcs,
  219. args = [
  220. "--dataset-size-gb=1",
  221. "--num-workers=1",
  222. ],
  223. main = "air_tests/air_benchmarks/workloads/data_benchmark.py",
  224. tags = [
  225. "exclusive",
  226. "team:ml",
  227. ],
  228. deps = [
  229. "//:ray_lib",
  230. "//python/ray/air:ml_lib",
  231. ],
  232. )
  233. py_test(
  234. name = "air_benchmark_gpu_batch_prediction_smoke_test",
  235. size = "small",
  236. srcs = test_srcs,
  237. args = [
  238. "--data-size-gb=1",
  239. "--smoke-test",
  240. ],
  241. main = "air_tests/air_benchmarks/workloads/gpu_batch_prediction.py",
  242. tags = [
  243. "exclusive",
  244. "team:ml",
  245. ],
  246. deps = [
  247. "//:ray_lib",
  248. "//python/ray/air:ml_lib",
  249. ],
  250. )
  251. py_test(
  252. name = "air_benchmark_pytorch_training_e2e_smoke_test",
  253. size = "small",
  254. srcs = test_srcs,
  255. args = [
  256. "--data-size-gb=1",
  257. "--smoke-test",
  258. ],
  259. main = "air_tests/air_benchmarks/workloads/pytorch_training_e2e.py",
  260. tags = [
  261. "exclusive",
  262. "team:ml",
  263. ],
  264. deps = [
  265. "//:ray_lib",
  266. "//python/ray/air:ml_lib",
  267. ],
  268. )
  269. py_test(
  270. name = "air_benchmark_tensorflow_smoke_test",
  271. size = "large",
  272. srcs = test_srcs,
  273. args = [
  274. "run",
  275. "--num-runs=1",
  276. "--num-epochs=1",
  277. "--num-workers=1",
  278. "--cpus-per-worker=1",
  279. "--batch-size=1",
  280. "--smoke-test",
  281. "--local",
  282. ],
  283. main = "air_tests/air_benchmarks/workloads/tensorflow_benchmark.py",
  284. tags = [
  285. "exclusive",
  286. "team:ml",
  287. ],
  288. deps = [
  289. "//:ray_lib",
  290. "//python/ray/air:ml_lib",
  291. ],
  292. )
  293. py_test(
  294. name = "air_benchmark_torch_smoke_test",
  295. size = "large",
  296. srcs = test_srcs,
  297. args = [
  298. "run",
  299. "--num-runs=1",
  300. "--num-epochs=1",
  301. "--num-workers=1",
  302. "--cpus-per-worker=1",
  303. "--batch-size=1",
  304. "--smoke-test",
  305. "--local",
  306. ],
  307. main = "air_tests/air_benchmarks/workloads/torch_benchmark.py",
  308. tags = [
  309. "exclusive",
  310. "team:ml",
  311. ],
  312. deps = [
  313. "//:ray_lib",
  314. "//python/ray/air:ml_lib",
  315. ],
  316. )
  317. py_test(
  318. name = "air_benchmark_tune_torch_smoke_test",
  319. # Keep this medium, as it will be slower if data has to be downloaded
  320. # (runtime is shorter when air_benchmark_torch_smoke_test is executed first)
  321. size = "medium",
  322. srcs = test_srcs,
  323. args = [
  324. "--num-runs=1",
  325. "--num-trials=1",
  326. "--num-workers=1",
  327. "--smoke-test",
  328. ],
  329. main = "air_tests/air_benchmarks/workloads/tune_torch_benchmark.py",
  330. tags = [
  331. "exclusive",
  332. "team:ml",
  333. ],
  334. deps = [
  335. "//:ray_lib",
  336. "//python/ray/air:ml_lib",
  337. ],
  338. )
  339. ####
  340. # RELEASE TEST INFRA unit tests
  341. ####
  342. py_runtime(
  343. name = "python3_runtime",
  344. interpreter = bk_python,
  345. python_version = "PY3",
  346. visibility = ["//visibility:private"],
  347. )
  348. py_runtime_pair(
  349. name = "python_runtime_pair",
  350. py2_runtime = None,
  351. py3_runtime = ":python3_runtime",
  352. visibility = ["//visibility:private"],
  353. )
  354. constraint_setting(name = "hermetic")
  355. constraint_value(
  356. name = "hermetic_python",
  357. constraint_setting = ":hermetic",
  358. visibility = ["//visibility:private"],
  359. )
  360. toolchain(
  361. name = "python_toolchain",
  362. exec_compatible_with = [":hermetic_python"],
  363. toolchain = ":python_runtime_pair",
  364. toolchain_type = "@bazel_tools//tools/python:toolchain_type",
  365. )
  366. platform(
  367. name = "hermetic_python_platform",
  368. constraint_values = [":hermetic_python"],
  369. parents = ["@local_config_platform//:host"],
  370. visibility = ["//visibility:private"],
  371. )
  372. py_library(
  373. name = "ray_release",
  374. srcs = glob(
  375. ["ray_release/**/*.py"],
  376. exclude = ["ray_release/tests/*.py"],
  377. ),
  378. data = glob(["ray_release/environments/*.env"]) + [
  379. "ray_release/buildkite/aws_instance_types.csv",
  380. "ray_release/schema.json",
  381. ],
  382. imports = ["."],
  383. visibility = ["//visibility:public"],
  384. deps = [
  385. bk_require("anyscale"),
  386. bk_require("bazel-runfiles"),
  387. bk_require("boto3"),
  388. bk_require("botocore"),
  389. bk_require("click"),
  390. bk_require("google-cloud-storage"),
  391. bk_require("jinja2"),
  392. bk_require("pybuildkite"),
  393. bk_require("pygithub"),
  394. bk_require("retry"),
  395. ],
  396. )
  397. py_library(
  398. name = "test_utils",
  399. srcs = ["ray_release/tests/utils.py"],
  400. imports = ["."],
  401. visibility = ["//visibility:private"],
  402. )
  403. py_test(
  404. name = "test_alerts",
  405. size = "small",
  406. srcs = ["ray_release/tests/test_alerts.py"],
  407. exec_compatible_with = [":hermetic_python"],
  408. tags = [
  409. "release_unit",
  410. "team:ci",
  411. ],
  412. deps = [
  413. ":ray_release",
  414. bk_require("pytest"),
  415. ],
  416. )
  417. py_test(
  418. name = "test_anyscale_job_manager",
  419. size = "small",
  420. srcs = ["ray_release/tests/test_anyscale_job_manager.py"],
  421. exec_compatible_with = [":hermetic_python"],
  422. tags = [
  423. "release_unit",
  424. "team:ci",
  425. ],
  426. deps = [
  427. ":ray_release",
  428. bk_require("pytest"),
  429. ],
  430. )
  431. py_test(
  432. name = "test_anyscale_job_wrapper",
  433. size = "small",
  434. srcs = ["ray_release/tests/test_anyscale_job_wrapper.py"],
  435. exec_compatible_with = [":hermetic_python"],
  436. tags = [
  437. "release_unit",
  438. "team:ci",
  439. ],
  440. deps = [
  441. ":ray_release",
  442. bk_require("pytest"),
  443. ],
  444. )
  445. py_test(
  446. name = "test_bisect",
  447. size = "small",
  448. srcs = ["ray_release/tests/test_bisect.py"],
  449. exec_compatible_with = [":hermetic_python"],
  450. tags = [
  451. "release_unit",
  452. "team:ci",
  453. ],
  454. deps = [
  455. ":ray_release",
  456. bk_require("pytest"),
  457. ],
  458. )
  459. py_test(
  460. name = "test_buildkite",
  461. size = "small",
  462. srcs = ["ray_release/tests/test_buildkite.py"],
  463. exec_compatible_with = [":hermetic_python"],
  464. tags = [
  465. "release_unit",
  466. "team:ci",
  467. ],
  468. deps = [
  469. ":ray_release",
  470. bk_require("pyyaml"),
  471. bk_require("pytest"),
  472. ],
  473. )
  474. py_test(
  475. name = "test_cluster_manager",
  476. size = "small",
  477. srcs = ["ray_release/tests/test_cluster_manager.py"],
  478. exec_compatible_with = [":hermetic_python"],
  479. tags = [
  480. "release_unit",
  481. "team:ci",
  482. ],
  483. deps = [
  484. ":ray_release",
  485. ":test_utils",
  486. bk_require("freezegun"),
  487. bk_require("pytest"),
  488. ],
  489. )
  490. py_test(
  491. name = "test_config",
  492. size = "small",
  493. srcs = ["ray_release/tests/test_config.py"],
  494. data = glob(
  495. ["**/*.yaml"],
  496. exclude = ["ray_release/**/*.yaml"],
  497. ) + [
  498. "//python/ray/autoscaler/aws:test_configs",
  499. "//python/ray/autoscaler/gcp:test_configs",
  500. ],
  501. exec_compatible_with = [":hermetic_python"],
  502. tags = [
  503. "release_unit",
  504. "team:ci",
  505. ],
  506. deps = [
  507. ":ray_release",
  508. bk_require("pytest"),
  509. ],
  510. )
  511. py_test(
  512. name = "test_env",
  513. size = "small",
  514. srcs = ["ray_release/tests/test_env.py"],
  515. exec_compatible_with = [":hermetic_python"],
  516. tags = [
  517. "release_unit",
  518. "team:ci",
  519. ],
  520. deps = [
  521. ":ray_release",
  522. bk_require("pytest"),
  523. ],
  524. )
  525. py_test(
  526. name = "test_glue",
  527. size = "small",
  528. srcs = ["ray_release/tests/test_glue.py"],
  529. exec_compatible_with = [":hermetic_python"],
  530. tags = [
  531. "release_unit",
  532. "team:ci",
  533. ],
  534. deps = [
  535. ":ray_release",
  536. ":test_utils",
  537. bk_require("pytest"),
  538. ],
  539. )
  540. py_test(
  541. name = "test_log_aggregator",
  542. size = "small",
  543. srcs = ["ray_release/tests/test_log_aggregator.py"],
  544. exec_compatible_with = [":hermetic_python"],
  545. tags = [
  546. "release_unit",
  547. "team:ci",
  548. ],
  549. deps = [
  550. ":ray_release",
  551. bk_require("pytest"),
  552. ],
  553. )
  554. py_test(
  555. name = "test_result",
  556. size = "small",
  557. srcs = ["ray_release/tests/test_result.py"],
  558. exec_compatible_with = [":hermetic_python"],
  559. tags = [
  560. "release_unit",
  561. "team:ci",
  562. ],
  563. deps = [
  564. ":ray_release",
  565. bk_require("pytest"),
  566. ],
  567. )
  568. py_test(
  569. name = "test_run_script",
  570. size = "small",
  571. srcs = ["ray_release/tests/test_run_script.py"],
  572. data = [
  573. "ray_release/tests/_test_catch_args.py",
  574. "ray_release/tests/_test_run_release_test_sh.py",
  575. "run_release_test.sh",
  576. ],
  577. exec_compatible_with = [":hermetic_python"],
  578. tags = [
  579. "release_unit",
  580. "team:ci",
  581. ],
  582. deps = [
  583. ":ray_release",
  584. bk_require("pytest"),
  585. ],
  586. )
  587. py_test(
  588. name = "test_state_machine",
  589. size = "small",
  590. srcs = ["ray_release/tests/test_state_machine.py"],
  591. exec_compatible_with = [":hermetic_python"],
  592. tags = [
  593. "release_unit",
  594. "team:ci",
  595. ],
  596. deps = [
  597. ":ray_release",
  598. bk_require("pytest"),
  599. ],
  600. )
  601. py_test(
  602. name = "test_template",
  603. size = "small",
  604. srcs = ["ray_release/tests/test_template.py"],
  605. exec_compatible_with = [":hermetic_python"],
  606. tags = [
  607. "release_unit",
  608. "team:ci",
  609. ],
  610. deps = [
  611. ":ray_release",
  612. bk_require("pytest"),
  613. ],
  614. )
  615. py_test(
  616. name = "test_test",
  617. size = "small",
  618. srcs = ["ray_release/tests/test_test.py"],
  619. exec_compatible_with = [":hermetic_python"],
  620. tags = [
  621. "release_unit",
  622. "team:ci",
  623. ],
  624. deps = [
  625. ":ray_release",
  626. bk_require("pytest"),
  627. ],
  628. )
  629. py_test(
  630. name = "test_wheels",
  631. size = "small",
  632. srcs = ["ray_release/tests/test_wheels.py"],
  633. data = [
  634. "//:python_sources",
  635. ],
  636. exec_compatible_with = [":hermetic_python"],
  637. tags = [
  638. "release_unit",
  639. "team:ci",
  640. ],
  641. deps = [
  642. ":ray_release",
  643. bk_require("freezegun"),
  644. bk_require("pytest"),
  645. ],
  646. )