Message ID | 20201010145544.61034-1-98.arpi@gmail.com |
---|---|
State | New |
Headers | show |
Series | None | expand |
Hi Arpitha, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on ext4/dev] [also build test WARNING on linus/master v5.9-rc8 next-20201009] [cannot apply to tytso-fscrypt/master] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Arpitha-Raghunandan/kunit-Support-for-Parameterized-Testing/20201011-051918 base: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev config: arm-randconfig-r031-20201011 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 9b5b3050237db3642ed7ab1bdb3ffa2202511b99) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://github.com/0day-ci/linux/commit/0cd253a8f2af3fd4e88c9ec8d7327bb26302c1da git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Arpitha-Raghunandan/kunit-Support-for-Parameterized-Testing/20201011-051918 git checkout 0cd253a8f2af3fd4e88c9ec8d7327bb26302c1da # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> fs/ext4/inode-test.c:133:31: warning: no previous prototype for function 'get_test_parameters' [-Wmissing-prototypes] struct timestamp_expectation *get_test_parameters(void) ^ fs/ext4/inode-test.c:133:1: note: declare 'static' if the function is not intended to be used outside of this translation unit struct timestamp_expectation *get_test_parameters(void) ^ static 1 warning generated. vim +/get_test_parameters +133 fs/ext4/inode-test.c 132 > 133 struct timestamp_expectation *get_test_parameters(void) 134 { 135 static struct timestamp_expectation test_data[] = { 136 { 137 .test_case_name = LOWER_BOUND_NEG_NO_EXTRA_BITS_CASE, 138 .msb_set = true, 139 .lower_bound = true, 140 .extra_bits = 0, 141 .expected = {.tv_sec = -0x80000000LL, .tv_nsec = 0L}, 142 }, 143 144 { 145 .test_case_name = UPPER_BOUND_NEG_NO_EXTRA_BITS_CASE, 146 .msb_set = true, 147 .lower_bound = false, 148 .extra_bits = 0, 149 .expected = {.tv_sec = -1LL, .tv_nsec = 0L}, 150 }, 151 152 { 153 .test_case_name = LOWER_BOUND_NONNEG_NO_EXTRA_BITS_CASE, 154 .msb_set = false, 155 .lower_bound = true, 156 .extra_bits = 0, 157 .expected = {0LL, 0L}, 158 }, 159 160 { 161 .test_case_name = UPPER_BOUND_NONNEG_NO_EXTRA_BITS_CASE, 162 .msb_set = false, 163 .lower_bound = false, 164 .extra_bits = 0, 165 .expected = {.tv_sec = 0x7fffffffLL, .tv_nsec = 0L}, 166 }, 167 168 { 169 .test_case_name = LOWER_BOUND_NEG_LO_1_CASE, 170 .msb_set = true, 171 .lower_bound = true, 172 .extra_bits = 1, 173 .expected = {.tv_sec = 0x80000000LL, .tv_nsec = 0L}, 174 }, 175 176 { 177 .test_case_name = UPPER_BOUND_NEG_LO_1_CASE, 178 .msb_set = true, 179 .lower_bound = false, 180 .extra_bits = 1, 181 .expected = {.tv_sec = 0xffffffffLL, .tv_nsec = 0L}, 182 }, 183 184 { 185 .test_case_name = LOWER_BOUND_NONNEG_LO_1_CASE, 186 .msb_set = false, 187 .lower_bound = true, 188 .extra_bits = 1, 189 .expected = {.tv_sec = 0x100000000LL, .tv_nsec = 0L}, 190 }, 191 192 { 193 .test_case_name = UPPER_BOUND_NONNEG_LO_1_CASE, 194 .msb_set = false, 195 .lower_bound = false, 196 .extra_bits = 1, 197 .expected = {.tv_sec = 0x17fffffffLL, .tv_nsec = 0L}, 198 }, 199 200 { 201 .test_case_name = LOWER_BOUND_NEG_HI_1_CASE, 202 .msb_set = true, 203 .lower_bound = true, 204 .extra_bits = 2, 205 .expected = {.tv_sec = 0x180000000LL, .tv_nsec = 0L}, 206 }, 207 208 { 209 .test_case_name = UPPER_BOUND_NEG_HI_1_CASE, 210 .msb_set = true, 211 .lower_bound = false, 212 .extra_bits = 2, 213 .expected = {.tv_sec = 0x1ffffffffLL, .tv_nsec = 0L}, 214 }, 215 216 { 217 .test_case_name = LOWER_BOUND_NONNEG_HI_1_CASE, 218 .msb_set = false, 219 .lower_bound = true, 220 .extra_bits = 2, 221 .expected = {.tv_sec = 0x200000000LL, .tv_nsec = 0L}, 222 }, 223 224 { 225 .test_case_name = UPPER_BOUND_NONNEG_HI_1_CASE, 226 .msb_set = false, 227 .lower_bound = false, 228 .extra_bits = 2, 229 .expected = {.tv_sec = 0x27fffffffLL, .tv_nsec = 0L}, 230 }, 231 232 { 233 .test_case_name = UPPER_BOUND_NONNEG_HI_1_NS_1_CASE, 234 .msb_set = false, 235 .lower_bound = false, 236 .extra_bits = 6, 237 .expected = {.tv_sec = 0x27fffffffLL, .tv_nsec = 1L}, 238 }, 239 240 { 241 .test_case_name = LOWER_BOUND_NONNEG_HI_1_NS_MAX_CASE, 242 .msb_set = false, 243 .lower_bound = true, 244 .extra_bits = 0xFFFFFFFF, 245 .expected = {.tv_sec = 0x300000000LL, 246 .tv_nsec = MAX_NANOSECONDS}, 247 }, 248 249 { 250 .test_case_name = LOWER_BOUND_NONNEG_EXTRA_BITS_1_CASE, 251 .msb_set = false, 252 .lower_bound = true, 253 .extra_bits = 3, 254 .expected = {.tv_sec = 0x300000000LL, .tv_nsec = 0L}, 255 }, 256 257 { 258 .test_case_name = UPPER_BOUND_NONNEG_EXTRA_BITS_1_CASE, 259 .msb_set = false, 260 .lower_bound = false, 261 .extra_bits = 3, 262 .expected = {.tv_sec = 0x37fffffffLL, .tv_nsec = 0L}, 263 } 264 }; 265 return test_data; 266 } 267 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/fs/ext4/inode-test.c b/fs/ext4/inode-test.c index d62d802c9c12..691ef0a4ffe1 100644 --- a/fs/ext4/inode-test.c +++ b/fs/ext4/inode-test.c @@ -72,6 +72,8 @@ #define UPPER_BOUND_NONNEG_EXTRA_BITS_1_CASE\ "2446-05-10 Upper bound of 32bit >=0 timestamp. All extra sec bits on" +#define NUMBER_OF_TESTCASES 16 + struct timestamp_expectation { const char *test_case_name; struct timespec64 expected; @@ -101,7 +103,36 @@ static time64_t get_32bit_time(const struct timestamp_expectation * const test) */ static void inode_test_xtimestamp_decoding(struct kunit *test) { - const struct timestamp_expectation test_data[] = { + struct timespec64 timestamp; + + struct timestamp_expectation *test_data = + (struct timestamp_expectation *)get_test_case_parameters(test); + + timestamp.tv_sec = get_32bit_time(test_data); + ext4_decode_extra_time(×tamp, + cpu_to_le32(test_data->extra_bits)); + + KUNIT_EXPECT_EQ_MSG(test, + test_data->expected.tv_sec, + timestamp.tv_sec, + CASE_NAME_FORMAT, + test_data->test_case_name, + test_data->msb_set, + test_data->lower_bound, + test_data->extra_bits); + KUNIT_EXPECT_EQ_MSG(test, + test_data->expected.tv_nsec, + timestamp.tv_nsec, + CASE_NAME_FORMAT, + test_data->test_case_name, + test_data->msb_set, + test_data->lower_bound, + test_data->extra_bits); +} + +struct timestamp_expectation *get_test_parameters(void) +{ + static struct timestamp_expectation test_data[] = { { .test_case_name = LOWER_BOUND_NEG_NO_EXTRA_BITS_CASE, .msb_set = true, @@ -231,36 +262,13 @@ static void inode_test_xtimestamp_decoding(struct kunit *test) .expected = {.tv_sec = 0x37fffffffLL, .tv_nsec = 0L}, } }; - - struct timespec64 timestamp; - int i; - - for (i = 0; i < ARRAY_SIZE(test_data); ++i) { - timestamp.tv_sec = get_32bit_time(&test_data[i]); - ext4_decode_extra_time(×tamp, - cpu_to_le32(test_data[i].extra_bits)); - - KUNIT_EXPECT_EQ_MSG(test, - test_data[i].expected.tv_sec, - timestamp.tv_sec, - CASE_NAME_FORMAT, - test_data[i].test_case_name, - test_data[i].msb_set, - test_data[i].lower_bound, - test_data[i].extra_bits); - KUNIT_EXPECT_EQ_MSG(test, - test_data[i].expected.tv_nsec, - timestamp.tv_nsec, - CASE_NAME_FORMAT, - test_data[i].test_case_name, - test_data[i].msb_set, - test_data[i].lower_bound, - test_data[i].extra_bits); - } + return test_data; } static struct kunit_case ext4_inode_test_cases[] = { - KUNIT_CASE(inode_test_xtimestamp_decoding), + KUNIT_CASE_PARAM(inode_test_xtimestamp_decoding, + get_test_parameters, NUMBER_OF_TESTCASES, + sizeof(struct timestamp_expectation)), {} };
Modifies fs/ext4/inode-test.c to use the parameterized testing feature of KUnit. Signed-off-by: Arpitha Raghunandan <98.arpi@gmail.com> --- fs/ext4/inode-test.c | 64 +++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 28 deletions(-)