jobid format and parse

This commit is contained in:
Rongsong Shen 2025-11-19 14:44:49 +08:00
parent 26e3c21c87
commit 3488b62716
6 changed files with 212 additions and 15 deletions

View file

@ -99,6 +99,43 @@ void test_roundup(void)
TEST_ASSERT_TRUE(ROUNDUP(31, 5) == 32);
}
void test_extract_bits(void) {
uint64_t id = 0xfefefefeffff;
TEST_ASSERT_TRUE(EXTRACT_BITS(id, 0, 4) == 0xf);
TEST_ASSERT_TRUE(EXTRACT_BITS(id, 16, 4) == 0xe);
TEST_ASSERT_TRUE(EXTRACT_BITS(id, 16, 8) == 0xfe);
TEST_ASSERT_TRUE(EXTRACT_BITS(id, 20, 12) == 0xfef);
TEST_ASSERT_TRUE(EXTRACT_BITS(id, 44, 4) == 0xf);
TEST_ASSERT_TRUE(EXTRACT_BITS(id, 40, 8) == 0xfe);
}
static void do_parse_jobid_test(uint64_t jobid) {
uint64_t jobid2;
int rc;
char buf[256];
rc = fmt_jobid(buf, sizeof(buf), jobid);
printf("\t\tCheck jobid %s\n", buf);
TEST_ASSERT_TRUE(rc > 0);
rc = parse_jobid(&jobid2, buf);
TEST_ASSERT_TRUE(rc >= 0);
TEST_ASSERT_TRUE(jobid == jobid2);
}
void test_parse_jobid1(void) {
uint64_t jobid = 0x400691c2fd498003;
do_parse_jobid_test(jobid);
}
void test_parse_jobid2(void) {
uint64_t jobid = 0x691d3c1d00013;
do_parse_jobid_test(jobid);
}
void test_utils(void)
{
printf("\n>> utils test\n\n");
@ -106,4 +143,7 @@ void test_utils(void)
RUN_TEST(test_timewindow_config_dup);
RUN_TEST(test_dup_threshold);
RUN_TEST(test_roundup);
RUN_TEST(test_extract_bits);
RUN_TEST(test_parse_jobid1);
RUN_TEST(test_parse_jobid2);
}