test: lwm2m: Implement bootstrap tests 4 - 7
* LightweightM2M-1.1-int-4 - Bootstrap Delete * LightweightM2M-1.1-int-5 - Server Initiated Bootstrap * LightweightM2M-1.1-int-6 - Bootstrap Sequence * LightweightM2M-1.1-int-7 - Fallback to bootstrap Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
This commit is contained in:
parent
34d4e50374
commit
51869b3e45
4 changed files with 79 additions and 8 deletions
|
@ -125,6 +125,14 @@ Tests are written from test spec;
|
|||
|---------|------|-----|
|
||||
|LightweightM2M-1.1-int-0 - Client Initiated Bootstrap |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-1 - Client Initiated Bootstrap Full (PSK) |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-2 - Client Initiated Bootstrap Full (Cert) | |testcase not implemented |
|
||||
|LightweightM2M-1.1-int-3 – Simple Bootstrap from Smartcard |:large_orange_diamond:|We don't have any smartcard support.|
|
||||
|LightweightM2M-1.1-int-4 - Bootstrap Delete |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-5 - Server Initiated Bootstrap |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-6 - Bootstrap Sequence |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-7 - Fallback to bootstrap |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-8 - Bootstrap Read | |Test cannot be implemented from client side.|
|
||||
|LightweightM2M-1.1-int-9 - Bootstrap and Configuration Consistency | |testcase not implemented |
|
||||
|LightweightM2M-1.1-int-101 - Initial Registration |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-102 - Registration Update |:white_check_mark:| |
|
||||
|LightweightM2M-1.1-int-103 - Deregistration |:large_orange_diamond:|We don't have "disabled" functionality in server object|
|
||||
|
|
|
@ -44,6 +44,11 @@ CONFIG_LWM2M_RW_OMA_TLV_SUPPORT=y
|
|||
CONFIG_COAP_EXTENDED_OPTIONS_LEN=y
|
||||
CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE=40
|
||||
|
||||
# Speed up testing, we are running in non-lossy network
|
||||
CONFIG_COAP_INIT_ACK_TIMEOUT_MS=1000
|
||||
CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT=n
|
||||
CONFIG_LWM2M_RD_CLIENT_MAX_RETRIES=2
|
||||
|
||||
# Use QUEUE mode by default
|
||||
CONFIG_LWM2M_QUEUE_MODE_ENABLED=y
|
||||
CONFIG_LWM2M_QUEUE_MODE_UPTIME=20
|
||||
|
|
|
@ -15,9 +15,11 @@ This module contains only testcases that verify the bootstrap.
|
|||
"""
|
||||
|
||||
import logging
|
||||
import pytest
|
||||
from leshan import Leshan
|
||||
from twister_harness import Shell
|
||||
from twister_harness import DeviceAdapter
|
||||
from conftest import Endpoint
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -29,24 +31,69 @@ logger = logging.getLogger(__name__)
|
|||
# Bootstrap Interface: [0-99]
|
||||
#
|
||||
|
||||
def verify_LightweightM2M_1_1_int_0(shell: Shell, dut: DeviceAdapter):
|
||||
def verify_LightweightM2M_1_1_int_0(dut: DeviceAdapter, endpoint_bootstrap: Endpoint):
|
||||
"""LightweightM2M-1.1-int-0 - Client Initiated Bootstrap"""
|
||||
dut.readlines_until(regex='.*Bootstrap started with endpoint', timeout=5.0)
|
||||
dut.readlines_until(regex='.*Bootstrap registration done', timeout=5.0)
|
||||
dut.readlines_until(regex='.*Bootstrap data transfer done', timeout=5.0)
|
||||
dut.readlines_until(regex='.*Bootstrap transfer complete', timeout=5.0)
|
||||
endpoint_bootstrap.bootstrap = True
|
||||
|
||||
def test_LightweightM2M_1_1_int_1(shell: Shell, dut: DeviceAdapter, leshan: Leshan, endpoint_bootstrap: str):
|
||||
def test_LightweightM2M_1_1_int_1(shell: Shell, dut: DeviceAdapter, leshan: Leshan, endpoint_bootstrap: Endpoint):
|
||||
"""LightweightM2M-1.1-int-1 - Client Initiated Bootstrap Full (PSK)"""
|
||||
verify_LightweightM2M_1_1_int_0(shell, dut)
|
||||
verify_LightweightM2M_1_1_int_0(dut, endpoint_bootstrap)
|
||||
verify_LightweightM2M_1_1_int_101(shell, dut, leshan, endpoint_bootstrap)
|
||||
verify_LightweightM2M_1_1_int_401(shell, leshan, endpoint_bootstrap)
|
||||
|
||||
def verify_LightweightM2M_1_1_int_101(shell: Shell, dut: DeviceAdapter, leshan: Leshan, endpoint: str):
|
||||
def test_LightweightM2M_1_1_int_4(shell: Shell, dut: DeviceAdapter, leshan: Leshan, endpoint: Endpoint):
|
||||
"""LightweightM2M-1.1-int-4 - Bootstrap Delete"""
|
||||
shell.exec_command('lwm2m create 1/2')
|
||||
shell.exec_command('lwm2m read 1/2/0')
|
||||
retval = int(shell.get_filtered_output(shell.exec_command('retval'))[0])
|
||||
assert retval == 0
|
||||
leshan.execute(endpoint, '1/0/9')
|
||||
dut.readlines_until(regex='.*Registration Done', timeout=5.0)
|
||||
shell.exec_command('lwm2m read 1/2/0')
|
||||
retval = int(shell.get_filtered_output(shell.exec_command('retval'))[0])
|
||||
assert retval < 0
|
||||
logger.info('retval: %s', retval)
|
||||
|
||||
def test_LightweightM2M_1_1_int_5(dut: DeviceAdapter, leshan: Leshan, endpoint: Endpoint):
|
||||
"""LightweightM2M-1.1-int-5 - Server Initiated Bootstrap"""
|
||||
leshan.execute(endpoint, '1/0/9')
|
||||
dut.readlines_until(regex='.*Server Initiated Bootstrap', timeout=1)
|
||||
dut.readlines_until(regex='.*Bootstrap transfer complete', timeout=5.0)
|
||||
dut.readlines_until(regex='.*Registration Done', timeout=5.0)
|
||||
|
||||
def test_LightweightM2M_1_1_int_6(shell: Shell, dut: DeviceAdapter, endpoint: Endpoint):
|
||||
"""LightweightM2M-1.1-int-6 - Bootstrap Sequence"""
|
||||
shell.exec_command('lwm2m stop')
|
||||
dut.readlines_until(regex=r'.*Deregistration success', timeout=5)
|
||||
shell.exec_command(f'lwm2m start {endpoint}')
|
||||
lines = dut.readlines_until(regex='.*Registration Done', timeout=5.0)
|
||||
assert not any("Bootstrap" in line for line in lines)
|
||||
shell.exec_command('lwm2m stop')
|
||||
dut.readlines_until(regex=r'.*Deregistration success', timeout=5)
|
||||
shell.exec_command("lwm2m delete 1/0")
|
||||
shell.exec_command("lwm2m delete 0/1")
|
||||
shell.exec_command(f'lwm2m start {endpoint}')
|
||||
lines = dut.readlines_until(regex='.*Registration Done', timeout=5.0)
|
||||
assert any("Bootstrap" in line for line in lines)
|
||||
|
||||
@pytest.mark.slow
|
||||
def test_LightweightM2M_1_1_int_7(shell: Shell, dut: DeviceAdapter, endpoint: Endpoint):
|
||||
"""LightweightM2M-1.1-int-7 - Fallback to bootstrap"""
|
||||
shell.exec_command('lwm2m stop')
|
||||
dut.readlines_until(regex=r'.*Deregistration success', timeout=5)
|
||||
shell.exec_command('lwm2m write 0/1/0 -s coaps://10.10.10.10:5684')
|
||||
shell.exec_command(f'lwm2m start {endpoint}')
|
||||
lines = dut.readlines_until(regex='.*Registration Done', timeout=600.0)
|
||||
assert any("Bootstrap" in line for line in lines)
|
||||
|
||||
def verify_LightweightM2M_1_1_int_101(shell: Shell, dut: DeviceAdapter, leshan: Leshan, endpoint: Endpoint):
|
||||
"""LightweightM2M-1.1-int-101 - Initial Registration"""
|
||||
dut.readlines_until(regex='.*Registration Done', timeout=5.0)
|
||||
assert leshan.get(f'/clients/{endpoint}')
|
||||
endpoint.registered = True
|
||||
|
||||
def verify_LightweightM2M_1_1_int_401(shell: Shell, leshan: Leshan, endpoint: str):
|
||||
def verify_LightweightM2M_1_1_int_401(shell: Shell, leshan: Leshan, endpoint: Endpoint):
|
||||
"""LightweightM2M-1.1-int-401 - UDP Channel Security - Pre-shared Key Mode"""
|
||||
lines = shell.get_filtered_output(shell.exec_command('lwm2m read 0/0/0 -s'))
|
||||
host = lines[0]
|
||||
|
|
|
@ -73,6 +73,17 @@ int set_socketoptions(struct lwm2m_ctx *ctx)
|
|||
ret = -errno;
|
||||
LOG_ERR("Failed to enable TLS_DTLS_CID: %d", ret);
|
||||
}
|
||||
|
||||
/* Allow DTLS handshake to timeout much faster.
|
||||
* these tests run on TUN/TAP network, so there should be no network latency.
|
||||
*/
|
||||
uint32_t min = 100;
|
||||
uint32_t max = 500;
|
||||
|
||||
zsock_setsockopt(ctx->sock_fd, SOL_TLS, TLS_DTLS_HANDSHAKE_TIMEOUT_MIN, &min,
|
||||
sizeof(min));
|
||||
zsock_setsockopt(ctx->sock_fd, SOL_TLS, TLS_DTLS_HANDSHAKE_TIMEOUT_MAX, &max,
|
||||
sizeof(max));
|
||||
}
|
||||
return lwm2m_set_default_sockopt(ctx);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue