1# Copyright (c) 2023-2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//build/ohos.gni")
15import("//build/test.gni")
16import("//foundation/communication/netstack/netstack_config.gni")
17
18SOCKET_NAPI = "$NETSTACK_DIR/frameworks/js/napi/socket"
19TLS_NAPI = "$NETSTACK_DIR/frameworks/js/napi/tls"
20
21utils_include = [
22  "$SUBSYSTEM_DIR/netstack/utils/common_utils/include",
23  "$SUBSYSTEM_DIR/netstack/utils/log/include",
24  "$SUBSYSTEM_DIR/netstack/utils/napi_utils/include",
25  "$THIRD_PARTY_ROOT/curl/include",
26]
27
28common_external_deps = [
29  "hilog:libhilog",
30  "napi:ace_napi",
31]
32
33ohos_unittest("socket_unittest") {
34  sanitize = {
35    cfi = true
36    cfi_cross_dso = true
37    debug = false
38  }
39
40  branch_protector_ret = "pac_ret"
41
42  module_out_path = "netstack/socket_unittest"
43
44  include_dirs = [
45    "$NETSTACK_DIR/utils/napi_utils/include",
46    "$NETSTACK_INNERKITS_DIR/tls_socket/include",
47    "$NETSTACK_NATIVE_ROOT/tls_socket/include",
48    "$SOCKET_NAPI/async_context/include",
49    "$SOCKET_NAPI/async_work/include",
50    "$SOCKET_NAPI/constant/include",
51    "$SOCKET_NAPI/options/include",
52    "$SOCKET_NAPI/socket_exec/include",
53    "$SOCKET_NAPI/socket_module/include",
54    "$TLS_NAPI/include",
55    "$TLS_NAPI/include/context",
56  ]
57  include_dirs += utils_include
58
59  sources = [
60    "$NETSTACK_NATIVE_ROOT/tls_socket/src/secure_data.cpp",
61    "$NETSTACK_NATIVE_ROOT/tls_socket/src/socket_error.cpp",
62    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_certificate.cpp",
63    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_configuration.cpp",
64    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_context.cpp",
65    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_context_server.cpp",
66    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_key.cpp",
67    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_socket.cpp",
68    "$NETSTACK_NATIVE_ROOT/tls_socket/src/tls_socket_server.cpp",
69    "$SOCKET_NAPI/async_context/src/bind_context.cpp",
70    "$SOCKET_NAPI/async_context/src/common_context.cpp",
71    "$SOCKET_NAPI/async_context/src/connect_context.cpp",
72    "$SOCKET_NAPI/async_context/src/local_socket_context.cpp",
73    "$SOCKET_NAPI/async_context/src/local_socket_server_context.cpp",
74    "$SOCKET_NAPI/async_context/src/multicast_get_loopback_context.cpp",
75    "$SOCKET_NAPI/async_context/src/multicast_get_ttl_context.cpp",
76    "$SOCKET_NAPI/async_context/src/multicast_membership_context.cpp",
77    "$SOCKET_NAPI/async_context/src/multicast_set_loopback_context.cpp",
78    "$SOCKET_NAPI/async_context/src/multicast_set_ttl_context.cpp",
79    "$SOCKET_NAPI/async_context/src/tcp_extra_context.cpp",
80    "$SOCKET_NAPI/async_context/src/tcp_send_context.cpp",
81    "$SOCKET_NAPI/async_context/src/tcp_server_common_context.cpp",
82    "$SOCKET_NAPI/async_context/src/tcp_server_extra_context.cpp",
83    "$SOCKET_NAPI/async_context/src/tcp_server_listen_context.cpp",
84    "$SOCKET_NAPI/async_context/src/tcp_server_send_context.cpp",
85    "$SOCKET_NAPI/async_context/src/udp_extra_context.cpp",
86    "$SOCKET_NAPI/async_context/src/udp_send_context.cpp",
87    "$SOCKET_NAPI/async_work/src/socket_async_work.cpp",
88    "$SOCKET_NAPI/options/src/extra_options_base.cpp",
89    "$SOCKET_NAPI/options/src/local_socket_options.cpp",
90    "$SOCKET_NAPI/options/src/net_address.cpp",
91    "$SOCKET_NAPI/options/src/socket_remote_info.cpp",
92    "$SOCKET_NAPI/options/src/socket_state_base.cpp",
93    "$SOCKET_NAPI/options/src/tcp_connect_options.cpp",
94    "$SOCKET_NAPI/options/src/tcp_extra_options.cpp",
95    "$SOCKET_NAPI/options/src/tcp_send_options.cpp",
96    "$SOCKET_NAPI/options/src/udp_extra_options.cpp",
97    "$SOCKET_NAPI/options/src/udp_send_options.cpp",
98    "$SOCKET_NAPI/socket_exec/src/local_socket_exec.cpp",
99    "$SOCKET_NAPI/socket_exec/src/socket_exec.cpp",
100    "$SOCKET_NAPI/socket_exec/src/socket_extra_exec.cpp",
101    "$SOCKET_NAPI/socket_module/src/socket_module.cpp",
102    "$TLS_NAPI/src/context/tls_bind_context.cpp",
103    "$TLS_NAPI/src/context/tls_connect_context.cpp",
104    "$TLS_NAPI/src/context/tls_extra_context.cpp",
105    "$TLS_NAPI/src/context/tls_init_context.cpp",
106    "$TLS_NAPI/src/context/tls_napi_context.cpp",
107    "$TLS_NAPI/src/context/tls_send_context.cpp",
108    "$TLS_NAPI/src/context/tls_server_close_context.cpp",
109    "$TLS_NAPI/src/context/tls_server_napi_context.cpp",
110    "$TLS_NAPI/src/context/tls_server_send_context.cpp",
111    "$TLS_NAPI/src/monitor.cpp",
112    "$TLS_NAPI/src/monitor_server.cpp",
113    "$TLS_NAPI/src/tlssocket_async_work.cpp",
114    "$TLS_NAPI/src/tlssocket_exec.cpp",
115    "$TLS_NAPI/src/tlssocket_module.cpp",
116    "$TLS_NAPI/src/tlssocketserver_async_work.cpp",
117    "$TLS_NAPI/src/tlssocketserver_exec.cpp",
118    "$TLS_NAPI/src/tlssocketserver_module.cpp",
119    "SocketTest.cpp",
120  ]
121
122  deps = [
123    "$NETSTACK_DIR/frameworks/js/napi/socket:socket",
124    "$NETSTACK_DIR/utils/napi_utils:napi_utils",
125  ]
126
127  external_deps = common_external_deps
128  external_deps += [
129    "openssl:libcrypto_shared",
130    "openssl:libssl_shared",
131  ]
132
133  defines = []
134  if (defined(global_parts_info) &&
135      defined(global_parts_info.communication_netmanager_base) &&
136      global_parts_info.communication_netmanager_base) {
137    external_deps += [ "netmanager_base:net_conn_manager_if" ]
138    defines += [ "HAS_NETMANAGER_BASE=1" ]
139  } else {
140    defines += [ "HAS_NETMANAGER_BASE=0" ]
141  }
142
143  part_name = "netstack"
144  subsystem_name = "communication"
145}
146
147group("unittest") {
148  testonly = true
149  deps = [ ":socket_unittest" ]
150}
151