BUILD.bazel 14 KB

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