|
30 | 30 | #define SERVICE_LEASE UINT32_MAX
|
31 | 31 | #define SERVICE_KEY_LEASE (UINT32_MAX - 1)
|
32 | 32 |
|
| 33 | +#define _SERVER_IPV6_START 0x20, 0x01, 0x0D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ |
| 34 | + 0x00, 0x00, 0x00 |
| 35 | + |
| 36 | +#define SERVER_IPV6_ADDR1_BYTES _SERVER_IPV6_START, 0x1 |
| 37 | +#define SERVER_IPV6_ADDR2_BYTES _SERVER_IPV6_START, 0x2 |
| 38 | +#define SERVER_IPV6_ADDR3_BYTES _SERVER_IPV6_START, 0x3 |
| 39 | +#define SERVER_IPV6_ADDR4_BYTES _SERVER_IPV6_START, 0x4 |
| 40 | + |
| 41 | +#define CBOR_SERVER_IPV6_ADDR1 0x50, SERVER_IPV6_ADDR1_BYTES |
| 42 | +#define CBOR_SERVER_IPV6_ADDR2 0x50, SERVER_IPV6_ADDR2_BYTES |
| 43 | +#define CBOR_SERVER_IPV6_ADDR3 0x50, SERVER_IPV6_ADDR3_BYTES |
| 44 | +#define CBOR_SERVER_IPV6_ADDR4 0x50, SERVER_IPV6_ADDR4_BYTES |
| 45 | + |
| 46 | +#define SERVER_PORT 12345 |
| 47 | + |
33 | 48 | /*
|
34 | 49 | * NOTE:
|
35 | 50 | * The following service encoding is correct assuming that zcbor encodes arrays and maps
|
|
38 | 53 |
|
39 | 54 | /* clang-format off */
|
40 | 55 | #define CBOR_SERVICE \
|
| 56 | + /* Subtypes num: */ \ |
| 57 | + 0x2, \ |
| 58 | + /* TXT entry count: */ \ |
| 59 | + 0x2, \ |
| 60 | + /* String buffer size (service + instance): */ \ |
| 61 | + 0xb, \ |
| 62 | + /* Subtypes' buffer size: */ \ |
| 63 | + 0xa, \ |
| 64 | + /* TXT buffer size: */ \ |
| 65 | + 0x14, \ |
41 | 66 | /* Service type: */ \
|
42 | 67 | 0x65, SERVICE_TYPE, \
|
43 | 68 | /* Service instance: */ \
|
@@ -387,4 +412,129 @@ ZTEST(ot_rpc_srp_client, test_otSrpClientSetTtl)
|
387 | 412 | mock_nrf_rpc_tr_expect_done();
|
388 | 413 | }
|
389 | 414 |
|
| 415 | +/* Test serialization of otSrpClientStart() */ |
| 416 | +ZTEST(ot_rpc_srp_client, test_otSrpClientStart) |
| 417 | +{ |
| 418 | + otError error; |
| 419 | + otSockAddr sock_addr = { |
| 420 | + .mAddress = {{{ SERVER_IPV6_ADDR1_BYTES }}}, |
| 421 | + .mPort = SERVER_PORT, |
| 422 | + }; |
| 423 | + |
| 424 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_START, CBOR_SERVER_IPV6_ADDR1, |
| 425 | + CBOR_UINT16(SERVER_PORT)), RPC_RSP(OT_ERROR_NONE)); |
| 426 | + error = otSrpClientStart(NULL, &sock_addr); |
| 427 | + mock_nrf_rpc_tr_expect_done(); |
| 428 | + |
| 429 | + zassert_equal(error, OT_ERROR_NONE); |
| 430 | +} |
| 431 | + |
| 432 | +/* Test serialization of otSrpClientStop() */ |
| 433 | +ZTEST(ot_rpc_srp_client, test_otSrpClientStop) |
| 434 | +{ |
| 435 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_STOP), RPC_RSP()); |
| 436 | + otSrpClientStop(NULL); |
| 437 | + mock_nrf_rpc_tr_expect_done(); |
| 438 | +} |
| 439 | + |
| 440 | +/* Test serialization of otSrpClientIsRunning() */ |
| 441 | +ZTEST(ot_rpc_srp_client, test_otSrpClientIsRunning) |
| 442 | +{ |
| 443 | + bool err_1st; |
| 444 | + bool err_2nd; |
| 445 | + |
| 446 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_IS_RUNNING), RPC_RSP(CBOR_FALSE)); |
| 447 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_IS_RUNNING), RPC_RSP(CBOR_TRUE)); |
| 448 | + |
| 449 | + err_1st = otSrpClientIsRunning(NULL); |
| 450 | + err_2nd = otSrpClientIsRunning(NULL); |
| 451 | + |
| 452 | + mock_nrf_rpc_tr_expect_done(); |
| 453 | + |
| 454 | + zassert_false(err_1st); |
| 455 | + zassert_true(err_2nd); |
| 456 | +} |
| 457 | + |
| 458 | +/* Test serialization of otSrpClientGetServerAddress() */ |
| 459 | +ZTEST(ot_rpc_srp_client, test_otSrpClientGetServerAddress) |
| 460 | +{ |
| 461 | + const otSockAddr *sock_addr; |
| 462 | + |
| 463 | + otIp6Address expected_addr = {{{ SERVER_IPV6_ADDR1_BYTES }}}; |
| 464 | + |
| 465 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_GET_SERVER_ADDRESS), |
| 466 | + RPC_RSP(CBOR_SERVER_IPV6_ADDR1, CBOR_UINT16(SERVER_PORT))); |
| 467 | + |
| 468 | + sock_addr = otSrpClientGetServerAddress(NULL); |
| 469 | + |
| 470 | + mock_nrf_rpc_tr_expect_done(); |
| 471 | + |
| 472 | + zassert_mem_equal(&sock_addr->mAddress, &expected_addr, OT_IP6_ADDRESS_SIZE); |
| 473 | + zassert_equal(sock_addr->mPort, SERVER_PORT); |
| 474 | +} |
| 475 | + |
| 476 | +/* Test serialization of otSrpClientSetHostAddresses() */ |
| 477 | +ZTEST(ot_rpc_srp_client, test_otSrpClientSetHostAddresses) |
| 478 | +{ |
| 479 | + otError error; |
| 480 | + |
| 481 | + otIp6Address addrs[] = { {{{ SERVER_IPV6_ADDR1_BYTES }}}, {{{ SERVER_IPV6_ADDR2_BYTES }}}, |
| 482 | + {{{ SERVER_IPV6_ADDR3_BYTES }}}, {{{ SERVER_IPV6_ADDR4_BYTES }}} }; |
| 483 | + |
| 484 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_SET_HOST_ADDRESSES, 4, |
| 485 | + CBOR_LIST(CBOR_SERVER_IPV6_ADDR1, CBOR_SERVER_IPV6_ADDR2, |
| 486 | + CBOR_SERVER_IPV6_ADDR3, CBOR_SERVER_IPV6_ADDR4)), |
| 487 | + RPC_RSP(OT_ERROR_NONE)); |
| 488 | + error = otSrpClientSetHostAddresses(NULL, addrs, 4); |
| 489 | + mock_nrf_rpc_tr_expect_done(); |
| 490 | + |
| 491 | + zassert_equal(error, OT_ERROR_NONE); |
| 492 | +} |
| 493 | + |
| 494 | +/* Test serialization of otSrpClientIsAutoStartModeEnabled() */ |
| 495 | +ZTEST(ot_rpc_srp_client, test_otSrpClientIsAutoStartModeEnabled) |
| 496 | +{ |
| 497 | + bool err1; |
| 498 | + bool err2; |
| 499 | + |
| 500 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_IS_AUTO_START_MODE_ENABLED), |
| 501 | + RPC_RSP(CBOR_FALSE)); |
| 502 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_IS_AUTO_START_MODE_ENABLED), |
| 503 | + RPC_RSP(CBOR_TRUE)); |
| 504 | + |
| 505 | + err1 = otSrpClientIsAutoStartModeEnabled(NULL); |
| 506 | + err2 = otSrpClientIsAutoStartModeEnabled(NULL); |
| 507 | + |
| 508 | + mock_nrf_rpc_tr_expect_done(); |
| 509 | + |
| 510 | + zassert_false(err1); |
| 511 | + zassert_true(err2); |
| 512 | +} |
| 513 | + |
| 514 | +/* Test serialization of otSrpClientGetLeaseInterval() */ |
| 515 | +ZTEST(ot_rpc_srp_client, test_otSrpClientGetLeaseInterval) |
| 516 | +{ |
| 517 | + uint32_t interval; |
| 518 | + |
| 519 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_GET_LEASE_INTERVAL), |
| 520 | + RPC_RSP(CBOR_UINT32(100000))); |
| 521 | + interval = otSrpClientGetLeaseInterval(NULL); |
| 522 | + mock_nrf_rpc_tr_expect_done(); |
| 523 | + |
| 524 | + zassert_equal(interval, 100000); |
| 525 | +} |
| 526 | + |
| 527 | +/* Test serialization of otSrpClientGetTtl() */ |
| 528 | +ZTEST(ot_rpc_srp_client, test_otSrpClientGetTtl) |
| 529 | +{ |
| 530 | + uint32_t ttl; |
| 531 | + |
| 532 | + mock_nrf_rpc_tr_expect_add(RPC_CMD(OT_RPC_CMD_SRP_CLIENT_GET_TTL), |
| 533 | + RPC_RSP(CBOR_UINT8(120))); |
| 534 | + ttl = otSrpClientGetTtl(NULL); |
| 535 | + mock_nrf_rpc_tr_expect_done(); |
| 536 | + |
| 537 | + zassert_equal(ttl, 120); |
| 538 | +} |
| 539 | + |
390 | 540 | ZTEST_SUITE(ot_rpc_srp_client, NULL, tc_setup, NULL, tc_after, NULL);
|
0 commit comments