/* srp-test-runner.h * * Copyright (c) 2023 Apple Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * This file contains the SRP server test runner. */ #include "srp.h" #include #include "srp-test-runner.h" #include "srp-api.h" #include "dns-msg.h" #include "ioloop.h" #include "srp-mdns-proxy.h" #include "test-api.h" #include "srp-proxy.h" #include "srp-mdns-proxy.h" #include "test-dnssd.h" #include "test.h" ready_callback_t srp_test_dnssd_tls_listener_ready; void *srp_test_tls_listener_context; void (*srp_test_dso_message_finished)(void *context, message_t *message, dso_state_t *dso); void srp_test_server_run_test(void *context) { char *test_to_run = context; if (test_to_run != NULL) { #if TARGET_OS_IOS || TARGET_OS_OSX || TARGET_OS_TV if (!strcmp(test_to_run, "change-text-record")) { test_change_text_record_start(NULL); } else if (!strcmp(test_to_run, "multi-host-record")) { test_multi_host_record_start(NULL); } else if (!strcmp(test_to_run, "lease-expiry")) { test_lease_expiry_start(NULL); } else if (!strcmp(test_to_run, "lease-renewal")) { test_lease_renewal_start(NULL); } else if (!strcmp(test_to_run, "single-srpl-update")) { test_single_srpl_update(NULL); } else if (!strcmp(test_to_run, "srpl-two-instances-dup")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_BOTH); } else if (!strcmp(test_to_run, "srpl-two-instances-dup-first")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_FIRST); } else if (!strcmp(test_to_run, "srpl-two-instances-dup-last")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_LAST); } else if (!strcmp(test_to_run, "srpl-two-instances-dup-add-first")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_FIRST); } else if (!strcmp(test_to_run, "srpl-two-instances-dup-add-last")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_LAST); } else if (!strcmp(test_to_run, "srpl-two-instances-dup-2keys")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_TWO_KEYS); } else if (!strcmp(test_to_run, "srpl-two-instances")) { test_srpl_host_2i(NULL, DUP_TEST_VARIANT_NO_DUP); } else if (!strcmp(test_to_run, "srpl-two-instances-one-remove")) { test_srpl_host_2ir(NULL); } else if (!strcmp(test_to_run, "srpl-zero-instances-two-servers")) { test_srpl_host_0i2s(NULL); } else if (!strcmp(test_to_run, "srpl-lease-time")) { test_srpl_lease_time(NULL); } else if (!strcmp(test_to_run, "dns-dangling-query")) { test_dns_dangling_query(NULL); } else if (!strcmp(test_to_run, "srpl-cycle-through-peers")) { test_srpl_cycle_through_peers(NULL); } else if (!strcmp(test_to_run, "srpl-update-after-remove")) { test_srpl_update_after_remove(NULL); } else if (!strcmp(test_to_run, "dns-push-hardwired")) { test_dns_push(NULL, PUSH_TEST_VARIANT_HARDWIRED); } else if (!strcmp(test_to_run, "dns-push-mdns")) { test_dns_push(NULL, PUSH_TEST_VARIANT_MDNS); } else if (!strcmp(test_to_run, "dns-hardwired")) { test_dns_push(NULL, PUSH_TEST_VARIANT_DNS_HARDWIRED); } else if (!strcmp(test_to_run, "dns-mdns")) { test_dns_push(NULL, PUSH_TEST_VARIANT_DNS_MDNS); } else if (!strcmp(test_to_run, "dns-push-crash")) { test_dns_push(NULL, PUSH_TEST_VARIANT_DAEMON_CRASH); } else if (!strcmp(test_to_run, "dns-crash")) { test_dns_push(NULL, PUSH_TEST_VARIANT_DNS_CRASH); } else if (!strcmp(test_to_run, "dns-two")) { test_dns_push(NULL, PUSH_TEST_VARIANT_TWO_QUESTIONS); } else if (!strcmp(test_to_run, "listener-longevity")) { test_listen_longevity_start(NULL); } else if (!strcmp(test_to_run, "ifaddrs")) { test_ifaddrs_start(NULL); } else { INFO("test to run: %s", test_to_run); exit(1); } #else INFO("skipping test %s on limited device."); exit(0); #endif } else { INFO("no test to run"); exit(1); } } void * srp_test_server_find_instance(void *state, const char *name, const char *regtype) { test_state_t *test_state = (test_state_t *)state; srp_server_t *server = test_state->primary; adv_host_t *host; adv_instance_t *instance; for (host = server->hosts; host != NULL; host = host->next) { if (host->instances != NULL) { for (int i = 0; i < host->instances->num; i++) { if (host->instances->vec[i] != NULL) { instance = host->instances->vec[i]; if (!strcmp(instance->instance_name, name) && !strcmp(instance->service_type, regtype)) { return instance; } } } } } return NULL; } // Local Variables: // mode: C // tab-width: 4 // c-file-style: "bsd" // c-basic-offset: 4 // fill-column: 108 // indent-tabs-mode: nil // End: