Skip to content

Commit 07b79ab

Browse files
committed
feat(mdns): Console test: set port for (delegated) srvs
1 parent c9a58d7 commit 07b79ab

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

components/mdns/mdns_console.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,8 @@ static struct {
860860
struct arg_str *service;
861861
struct arg_str *proto;
862862
struct arg_int *port;
863+
struct arg_str *host;
864+
struct arg_str *instance;
863865
struct arg_end *end;
864866
} mdns_service_port_set_args;
865867

@@ -876,7 +878,19 @@ static int cmd_mdns_service_port_set(int argc, char **argv)
876878
return 1;
877879
}
878880

879-
ESP_ERROR_CHECK( mdns_service_port_set(mdns_service_port_set_args.service->sval[0], mdns_service_port_set_args.proto->sval[0], mdns_service_port_set_args.port->ival[0]) );
881+
const char *host = NULL;
882+
if (mdns_service_port_set_args.host->count && mdns_service_port_set_args.host->sval[0]) {
883+
host = mdns_service_port_set_args.host->sval[0];
884+
}
885+
const char *instance = NULL;
886+
if (mdns_service_port_set_args.instance->count && mdns_service_port_set_args.instance->sval[0]) {
887+
instance = mdns_service_port_set_args.instance->sval[0];
888+
}
889+
esp_err_t err = mdns_service_port_set_for_host(instance, mdns_service_port_set_args.service->sval[0], mdns_service_port_set_args.proto->sval[0], host, mdns_service_port_set_args.port->ival[0]);
890+
if (err != ESP_OK) {
891+
printf("mdns_service_port_set_for_host() failed with %s\n", esp_err_to_name(err));
892+
return 1;
893+
}
880894
return 0;
881895
}
882896

@@ -885,6 +899,8 @@ static void register_mdns_service_port_set(void)
885899
mdns_service_port_set_args.service = arg_str1(NULL, NULL, "<service>", "MDNS Service");
886900
mdns_service_port_set_args.proto = arg_str1(NULL, NULL, "<proto>", "IP Protocol");
887901
mdns_service_port_set_args.port = arg_int1(NULL, NULL, "<port>", "Service Port");
902+
mdns_service_port_set_args.host = arg_str0("h", "host", "<hostname>", "Service for this (delegated) host");
903+
mdns_service_port_set_args.instance = arg_str0("i", "instance", "<instance>", "Instance name");
888904
mdns_service_port_set_args.end = arg_end(2);
889905

890906
const esp_console_cmd_t cmd_add = {

components/mdns/tests/host_test/pytest_mdns.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,28 +107,44 @@ def test_remove_delegated_service(mdns_console, dig_app):
107107
mdns_console.get_output('MDNS: Service Instance: extern')
108108

109109

110-
def check_txt_for_service(instance, service, proto, mdns_console, dig_app, host=None):
110+
def check_txt_for_service(instance, service, proto, mdns_console, dig_app, host=None, with_inst=False):
111111
for_host_arg = f'-h {host}' if host is not None else ''
112-
mdns_console.send_input(f'mdns_service_txt_set {service} {proto} {for_host_arg} key1 value1')
112+
for_inst_arg = f'-i {instance}' if with_inst else ''
113+
mdns_console.send_input(f'mdns_service_txt_set {service} {proto} {for_host_arg} {for_inst_arg} key1 value1')
113114
dig_app.check_record(f'{instance}.{service}.{proto}.local', query_type='SRV', expected=True)
114115
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=True, expect='key1=value1')
115-
mdns_console.send_input(f'mdns_service_txt_set {service} {proto} {for_host_arg} key2 value2')
116+
mdns_console.send_input(f'mdns_service_txt_set {service} {proto} {for_host_arg} {for_inst_arg} key2 value2')
116117
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=True, expect='key2=value2')
117-
mdns_console.send_input(f'mdns_service_txt_remove {service} {proto} {for_host_arg} key2')
118+
mdns_console.send_input(f'mdns_service_txt_remove {service} {proto} {for_host_arg} {for_inst_arg} key2')
118119
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=False, expect='key2=value2')
119120
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=True, expect='key1=value1')
120-
mdns_console.send_input(f'mdns_service_txt_replace {service} {proto} {for_host_arg} key3=value3 key4=value4')
121+
mdns_console.send_input(f'mdns_service_txt_replace {service} {proto} {for_host_arg} {for_inst_arg} key3=value3 key4=value4')
121122
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=False, expect='key1=value1')
122123
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=True, expect='key3=value3')
123124
dig_app.check_record(f'{service}.{proto}.local', query_type='TXT', expected=True, expect='key4=value4')
124125

125126

126127
def test_update_txt(mdns_console, dig_app):
127128
check_txt_for_service('local', '_test', '_tcp', mdns_console=mdns_console, dig_app=dig_app)
129+
check_txt_for_service('local', '_test', '_tcp', mdns_console=mdns_console, dig_app=dig_app, with_inst=True)
128130

129131

130132
def test_update_delegated_txt(mdns_console, dig_app):
131133
check_txt_for_service('extern', '_test2', '_tcp', mdns_console=mdns_console, dig_app=dig_app, host='delegated')
134+
check_txt_for_service('extern', '_test2', '_tcp', mdns_console=mdns_console, dig_app=dig_app, host='delegated', with_inst=True)
135+
136+
137+
def test_service_port_set(mdns_console, dig_app):
138+
dig_app.check_record('local._test._tcp.local', query_type='SRV', expected=True, expect='80')
139+
mdns_console.send_input('mdns_service_port_set _test _tcp 81')
140+
dig_app.check_record('local._test._tcp.local', query_type='SRV', expected=True, expect='81')
141+
mdns_console.send_input('mdns_service_port_set _test2 _tcp -h delegated 82')
142+
dig_app.check_record('extern._test2._tcp.local', query_type='SRV', expected=True, expect='82')
143+
mdns_console.send_input('mdns_service_port_set _test2 _tcp -h delegated -i extern 83')
144+
dig_app.check_record('extern._test2._tcp.local', query_type='SRV', expected=True, expect='83')
145+
mdns_console.send_input('mdns_service_port_set _test2 _tcp -h delegated -i invalid_inst 84')
146+
mdns_console.get_output('ESP_ERR_NOT_FOUND')
147+
dig_app.check_record('extern._test2._tcp.local', query_type='SRV', expected=True, expect='83')
132148

133149

134150
if __name__ == '__main__':

0 commit comments

Comments
 (0)