Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / ot-br-posix / repo / tests / mdns / test_init
1 #!/bin/bash
2 #
3 #  Copyright (c) 2018, The OpenThread Authors.
4 #  All rights reserved.
5 #
6 #  Redistribution and use in source and binary forms, with or without
7 #  modification, are permitted provided that the following conditions are met:
8 #  1. Redistributions of source code must retain the above copyright
9 #     notice, this list of conditions and the following disclaimer.
10 #  2. Redistributions in binary form must reproduce the above copyright
11 #     notice, this list of conditions and the following disclaimer in the
12 #     documentation and/or other materials provided with the distribution.
13 #  3. Neither the name of the copyright holder nor the
14 #     names of its contributors may be used to endorse or promote products
15 #     derived from this software without specific prior written permission.
16 #
17 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 #  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 #  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 #  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 #  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 #  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 #  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 #  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 #  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 #  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 #  POSSIBILITY OF SUCH DAMAGE.
28 #
29
30 #
31 # This script includes common utils for testing mdns
32 #
33
34 set -euxo pipefail
35
36 readonly DNS_SD_RESULT=result
37
38 case "${OTBR_MDNS}" in
39     mDNSResponder)
40         sudo service avahi-daemon stop || true
41         sudo killall mdnsd || true
42         sudo mdnsd
43         sleep 1
44         ;;
45
46     avahi)
47         sudo killall mdnsd || true
48         sudo service avahi-daemon restart
49         sleep 1
50         ;;
51
52     *)
53         echo >&2 "Not supported"
54         exit 128
55         ;;
56 esac
57
58 on_exit()
59 {
60     readonly EXIT_CODE=$?
61
62     kill "$PID"
63     [[ ! -e ${DNS_SD_RESULT} ]] || rm "${DNS_SD_RESULT}" || true
64
65     exit $EXIT_CODE
66 }
67
68 start_publisher()
69 {
70     "${OTBR_TEST_MDNS}" "$1" &
71     PID=$!
72     trap on_exit EXIT
73     sleep 2
74 }
75
76 #######################################
77 # Check if a service is regisered
78 #
79 # Arguments:
80 #   $1  Name
81 #   $2  Type
82 #   $3  Text record
83 #
84 # Returns:
85 #   0           Registered
86 #   otherwise   Not registered
87 #######################################
88 dns_sd_check()
89 {
90     # dns-sd will not exit
91     dns-sd -L "$1" "$2" local >"${DNS_SD_RESULT}" 2>&1 &
92     DNS_SD_PID=$!
93     sleep 1
94     kill "${DNS_SD_PID}"
95
96     cat "${DNS_SD_RESULT}"
97     grep "$3" "${DNS_SD_RESULT}"
98 }
99
100 #######################################
101 # Check if a host is regisered
102 #
103 # Arguments:
104 #   $1  hostname
105 #   $2  address
106 #
107 # Returns:
108 #   0           Registered
109 #   otherwise   Not registered
110 #######################################
111 dns_sd_check_host()
112 {
113     # dns-sd will not exit
114     dns-sd -G v6 "$1" >"${DNS_SD_RESULT}" 2>&1 &
115     DNS_SD_PID=$!
116     sleep 1
117     kill "${DNS_SD_PID}"
118
119     cat "${DNS_SD_RESULT}"
120     grep "$2" "${DNS_SD_RESULT}"
121 }
122
123 #######################################
124 # Check if a service is regisered
125 #
126 # Arguments:
127 #   $1  Expected avahi query result string
128 #
129 # Returns:
130 #   0           Registered
131 #   otherwise   Not registered
132 #######################################
133 avahi_check()
134 {
135     avahi-browse -aprt | tee | grep "$1"
136 }