From 8c56dc412d2203bfc3afa46d093c02332725a1e2 Mon Sep 17 00:00:00 2001 From: joii2020 Date: Tue, 9 Apr 2024 16:20:16 +0800 Subject: [PATCH 1/5] Add testcase: chech max pipe limits on child --- .../tests/ckb_latest/features_since_v2023.rs | 6 ++++ script/testdata/spawn_cases | Bin 12392 -> 12576 bytes script/testdata/spawn_cases.c | 26 ++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/script/src/verify/tests/ckb_latest/features_since_v2023.rs b/script/src/verify/tests/ckb_latest/features_since_v2023.rs index e7a85ab28a..7233dcfb1c 100644 --- a/script/src/verify/tests/ckb_latest/features_since_v2023.rs +++ b/script/src/verify/tests/ckb_latest/features_since_v2023.rs @@ -103,6 +103,12 @@ fn check_spawn_max_vms_count() { assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); } +#[test] +fn check_spawn_max_pipe_limits() { + let result = simple_spawn_test("testdata/spawn_cases", &[11]); + assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); +} + #[test] fn check_vm_version() { let script_version = SCRIPT_VERSION; diff --git a/script/testdata/spawn_cases b/script/testdata/spawn_cases index 4532307917cf25ff68c1e8fd850d6e4369efc016..102de96660295b255cba65c7152a1a19b7e9a7d2 100755 GIT binary patch delta 2257 zcmZuye@s(X6n^*7mbQW|6fCtsYx(`uRuc{ABAtuC*rM`B-QqF=jG|&BZ38&TG!)WT zrda~yj%6d!GO}PsvLH4ao5r<9ovSkemu$;irf&otV`Q&pGQ}C$z3<*fiP=j|@44rE z=iKj{bNk+G{m@%|#X#sUDcu|`Vx&i289mtpw5X6olgU0>iY;j0-|t-Q-#1E z@`cVj3FQRuwd;To8zMOS24;Ci?~hF-76mjw>xdbW|_389N4^(uEEKi$@_A`64AAYp>C ze6{FmiNp?W^(h;r=$9=Qi7%|SW`ZJ`C^FdL8bwXix~owl+^8WPZl#^0lkmmv#d3%`=l+Yc<(>(nQe`&FKPMK z2)c*=dmBE#$)p=3^!HBHGED4HqPE((*sO{3nB_luTKM6@qq`*z}} z^#x~!g~F%o3}4llvcP;+)i`}N9sj|Tk7||W1KB&fdx{xRa6aM!3O#Poi&=0mzqr$z zrI}As0M;}!g0iXHWSAJ>&ssSHQE>dU5)nJ7*W;1$6`-O#&OSuLzRU$yBG7Sh@hlg( zG=a6Tt6X4ULZK(`oHAx4s8^%d&WiF`cAk|IgsyXe%|DC=@v#QglseIZ-pP$5$vrNh zl(f((E?|n_#7pm^D9L8|k_%`g?d~-$aPJb%g9l>GN@Nmmbhy?R=%NrA ztNjQR>_+cW!s1*;g2mY7j(rUiII<}$8FQi-G-$sQzLsvo1PAFV+o7vR>Scfb@JFEWBCj1`F{`8&oa zq|X`SMvI<#uoQ*2ir+?<>XJImkNM}>KW8-EquxSP3w}na_W``j89Sd+ z?{)+6ZXpYk%3=;Ivs^2U%0_m4R(=iv9;Wy*36D5G$IU6*pQ~jT$pc?sp9bCxH?Kbf zG8zvxA92^UG#sn*HhY`ujx@J4w}q7(8v#6Ex3Shjc*<^1o1#@r6%s;m7_&Px@~Ke> q98NTWo#^*_*yV6)m|}vn!kD8}W8FY@KB(DLs_D0rT{S%Eu>1#bWBw`t delta 2070 zcmZuye{2&~9KY+hnk=Yf9-?H26?mXE(!=#6UP}-BaW#=@_qE@BQ4%V0 zQ8>)>d6Rej`-o)*ENV{161p|x_a$5Rq;{Zav@`yCVI5!6Aqj&E>EX>+QtiVLysm3P zVPhBiuBgP=MZiuKm0(ZNL_M`jx@Rl#j8_yl@b(S}o^#3jg187n2Aqmu@3WSzBk8pC z=x6)bOyC_=x8Q~m`!p#SZrrG%5C;C7CHL9FG(>-LRug=FxxNLx|r{{?F`=;?_ZM3 zvl7(U-&0V)#$Yan4{g9l_bnjBLVGne_UG5630NPP)1&bcozv+Oy_iL%ZYZX{GzM_= z^3~q!8R#t*3cXa1C@o7dU{hsYwpvwgYt8gXy>T%U-?tFQ1Ez0I?RJDM-BZC$3^l$Y zgT#vatf{>hdi;kHTj7cft8!FU3PsU`FAEwf57p7;sj;&o0U_uN-|TLCA`1sskRpLB zV>AA)WNOD#dyLyj^alG`YKxmHiumO$QSyTx|0y8R67)eLOw>>wrczIYo?p5Si0NN? zjFsqeRI*izgZ6*aO*^P+59ak=y*!g4V0Qr}VBjA#ySRAKAlcH2oA04nN3mltYwp&l zd3XNzHXN^H1)^2UDt)Ym(Cyx_1kmqawpeszkNc)@7sdc zEXMjnr49X27pJM-Sy{;z3F2a8sdDwEi_Ozn*}TCvF#?1LLCP(5;H*zlqN(odPkPW- zSro&Kd}Dpua0j^mR#x^U;gIyesH}WQR?XwGaxRfgfJ8ez+(<+;k%&pdv;jx;s@}`8 zQg`)K1Ro{|KbZ6$z=1y((ImHJWn}^<_8ycKBU#0c$cl|vlSx@wO?18A%ZhpK`!iIW z$u#g|k3Tm7oM*CD+U#^SkN!osH;&=CF-{A% zL!{3nO}ty@MuDHawxyvPIoHNaoi{9ifr{A0i}p@JoDe&AL)Ab zOJYIX=b$g(c3Fdj&s&)OmT2|3K=zdK;-xN2mILgP*t!(2_g}Wkms7gN# zX4F%CB_5#N<@Z5;%YQ5$+*$>`?_Sdd8_tns-m(f?S NyS9? Date: Tue, 9 Apr 2024 19:19:08 +0800 Subject: [PATCH 2/5] Optimize test case max_fd_limits --- script/testdata/spawn_cases.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/script/testdata/spawn_cases.c b/script/testdata/spawn_cases.c index 489ebdf4ef..072e86db5e 100644 --- a/script/testdata/spawn_cases.c +++ b/script/testdata/spawn_cases.c @@ -336,7 +336,14 @@ int child_max_vms_count() { int parent_max_pipe_limits() { const char* argv[2] = {"", 0}; - int err = simple_spawn_args(0, 1, argv); + int err = 0; + uint64_t fd[2] = {0}; + for (int i = 0; i < 16; i++) { + err = ckb_pipe(fd); + CHECK(err); + } + err = simple_spawn_args(0, 1, argv); +exit: return err; } From 1f20a5ab89d19f8f3deed50ec97828c2ffae4421 Mon Sep 17 00:00:00 2001 From: joii2020 Date: Thu, 11 Apr 2024 17:26:41 +0800 Subject: [PATCH 3/5] Fix CI error --- script/testdata/spawn_dag.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/script/testdata/spawn_dag.rs b/script/testdata/spawn_dag.rs index cb9e52397b..f44b5189a1 100644 --- a/script/testdata/spawn_dag.rs +++ b/script/testdata/spawn_dag.rs @@ -1,5 +1,13 @@ // Generated by Molecule 0.7.5 +#![allow(clippy::needless_lifetimes)] +#![allow(clippy::needless_borrow)] +#![allow(clippy::wrong_self_convention)] +#![allow(clippy::if_same_then_else)] +#![allow(clippy::derivable_impls)] +#![allow(clippy::useless_conversion)] +#![allow(clippy::write_literal)] + use molecule::prelude::*; #[derive(Clone)] From 3e3be9756ef1e4e381e7ace688abc115adbd7a90 Mon Sep 17 00:00:00 2001 From: joii2020 Date: Thu, 11 Apr 2024 17:27:31 +0800 Subject: [PATCH 4/5] Add testcase about spawn --- .../tests/ckb_latest/features_since_v2023.rs | 6 +++++ script/testdata/spawn_cases.c | 27 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/script/src/verify/tests/ckb_latest/features_since_v2023.rs b/script/src/verify/tests/ckb_latest/features_since_v2023.rs index 7233dcfb1c..da248bf463 100644 --- a/script/src/verify/tests/ckb_latest/features_since_v2023.rs +++ b/script/src/verify/tests/ckb_latest/features_since_v2023.rs @@ -1184,3 +1184,9 @@ proptest! { assert_eq!(result.is_ok(), script_version >= ScriptVersion::V2); } } + +#[test] +fn check_spawn_close_invalid_fd() { + let result = simple_spawn_test("testdata/spawn_cases", &[12]); + assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); +} \ No newline at end of file diff --git a/script/testdata/spawn_cases.c b/script/testdata/spawn_cases.c index 072e86db5e..573cfceaa6 100644 --- a/script/testdata/spawn_cases.c +++ b/script/testdata/spawn_cases.c @@ -362,6 +362,29 @@ int child_max_pipe_limits() { return err; } +int parent_close_invalid_fd() { + uint64_t fds[2] = {0}; + int err = ckb_pipe(fds); + CHECK(err); + + err = ckb_close(fds[CKB_STDIN] + 32); + CHECK2(err == 6, -1); + + err = ckb_close(fds[CKB_STDIN]); + CHECK(err); + err = ckb_close(fds[CKB_STDOUT]); + CHECK(err); + + err = ckb_close(fds[CKB_STDIN]); + CHECK2(err == 6, -1); + err = ckb_close(fds[CKB_STDOUT]); + CHECK2(err == 6, -1); + + err = 0; +exit: + return err; +} + int parent_entry(int case_id) { int err = 0; uint64_t pid = 0; @@ -389,6 +412,8 @@ int parent_entry(int case_id) { } else if (case_id == 11) { err = parent_max_pipe_limits(&pid); return err; + } else if (case_id == 12) { + return parent_close_invalid_fd(&pid); } else { CHECK2(false, -2); } @@ -425,6 +450,8 @@ int child_entry(int case_id) { return child_max_vms_count(); } else if (case_id == 11) { return child_max_pipe_limits(); + } else if (case_id == 12) { + return 0; } else { return -1; } From c1aeaf2e12e999f9e81436d5323ca0f7082823ec Mon Sep 17 00:00:00 2001 From: joii Date: Mon, 15 Apr 2024 09:59:37 +0800 Subject: [PATCH 5/5] Add testcase: Add some code that is not covered --- .../tests/ckb_latest/features_since_v2023.rs | 27 +++- script/testdata/spawn_cases | Bin 12576 -> 15136 bytes script/testdata/spawn_cases.c | 146 +++++++++++++++++- 3 files changed, 171 insertions(+), 2 deletions(-) diff --git a/script/src/verify/tests/ckb_latest/features_since_v2023.rs b/script/src/verify/tests/ckb_latest/features_since_v2023.rs index da248bf463..58df15c753 100644 --- a/script/src/verify/tests/ckb_latest/features_since_v2023.rs +++ b/script/src/verify/tests/ckb_latest/features_since_v2023.rs @@ -1188,5 +1188,30 @@ proptest! { #[test] fn check_spawn_close_invalid_fd() { let result = simple_spawn_test("testdata/spawn_cases", &[12]); + println!("--- err: {:?}", result); assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); -} \ No newline at end of file +} + +#[test] +fn check_spawn_write_closed_fd() { + let result = simple_spawn_test("testdata/spawn_cases", &[13]); + assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); +} + +#[test] +fn check_spawn_pid() { + let result = simple_spawn_test("testdata/spawn_cases", &[14]); + assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); +} + +#[test] +fn check_spawn_offset_out_of_bound() { + let result = simple_spawn_test("testdata/spawn_cases", &[15]); + assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); +} + +#[test] +fn check_spawn_length_out_of_bound() { + let result = simple_spawn_test("testdata/spawn_cases", &[16]); + assert_eq!(result.is_ok(), SCRIPT_VERSION == ScriptVersion::V2); +} diff --git a/script/testdata/spawn_cases b/script/testdata/spawn_cases index 102de96660295b255cba65c7152a1a19b7e9a7d2..69baa51957699054f0b692e696b72ed712edd4fe 100755 GIT binary patch delta 5985 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%0DP$CZ|Xz+ zFTQxNuczbK5tvqMhKFlEfaMh&G}IX~4JBlwc!wP(9$M?NvS_X|R2T=)U014>f{W~c zQ+4$$n(m