test-platform-output.c
Go to the documentation of this file.
1 /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to
5  * deal in the Software without restriction, including without limitation the
6  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7  * sell copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19  * IN THE SOFTWARE.
20  */
21 
22 #include "uv.h"
23 #include "task.h"
24 #include <string.h>
25 
26 
27 TEST_IMPL(platform_output) {
28  char buffer[512];
29  size_t rss;
30  size_t size;
31  double uptime;
32  uv_pid_t pid;
33  uv_pid_t ppid;
34  uv_rusage_t rusage;
35  uv_cpu_info_t* cpus;
36  uv_interface_address_t* interfaces;
37  uv_passwd_t pwd;
38  uv_utsname_t uname;
39  int count;
40  int i;
41  int err;
42 
44  ASSERT(err == 0);
45  printf("uv_get_process_title: %s\n", buffer);
46 
47  size = sizeof(buffer);
48  err = uv_cwd(buffer, &size);
49  ASSERT(err == 0);
50  printf("uv_cwd: %s\n", buffer);
51 
53 #if defined(__MSYS__)
54  ASSERT(err == UV_ENOSYS);
55 #else
56  ASSERT(err == 0);
57  printf("uv_resident_set_memory: %llu\n", (unsigned long long) rss);
58 #endif
59 
60  err = uv_uptime(&uptime);
61 #if defined(__PASE__)
62  ASSERT(err == UV_ENOSYS);
63 #else
64  ASSERT(err == 0);
65  ASSERT(uptime > 0);
66  printf("uv_uptime: %f\n", uptime);
67 #endif
68 
69  err = uv_getrusage(&rusage);
70  ASSERT(err == 0);
71  ASSERT(rusage.ru_utime.tv_sec >= 0);
72  ASSERT(rusage.ru_utime.tv_usec >= 0);
73  ASSERT(rusage.ru_stime.tv_sec >= 0);
74  ASSERT(rusage.ru_stime.tv_usec >= 0);
75  printf("uv_getrusage:\n");
76  printf(" user: %llu sec %llu microsec\n",
77  (unsigned long long) rusage.ru_utime.tv_sec,
78  (unsigned long long) rusage.ru_utime.tv_usec);
79  printf(" system: %llu sec %llu microsec\n",
80  (unsigned long long) rusage.ru_stime.tv_sec,
81  (unsigned long long) rusage.ru_stime.tv_usec);
82  printf(" page faults: %llu\n", (unsigned long long) rusage.ru_majflt);
83  printf(" maximum resident set size: %llu\n",
84  (unsigned long long) rusage.ru_maxrss);
85 
86  err = uv_cpu_info(&cpus, &count);
87 #if defined(__CYGWIN__) || defined(__MSYS__)
88  ASSERT(err == UV_ENOSYS);
89 #else
90  ASSERT(err == 0);
91 
92  printf("uv_cpu_info:\n");
93  for (i = 0; i < count; i++) {
94  printf(" model: %s\n", cpus[i].model);
95  printf(" speed: %d\n", cpus[i].speed);
96  printf(" times.sys: %llu\n", (unsigned long long) cpus[i].cpu_times.sys);
97  printf(" times.user: %llu\n",
98  (unsigned long long) cpus[i].cpu_times.user);
99  printf(" times.idle: %llu\n",
100  (unsigned long long) cpus[i].cpu_times.idle);
101  printf(" times.irq: %llu\n", (unsigned long long) cpus[i].cpu_times.irq);
102  printf(" times.nice: %llu\n",
103  (unsigned long long) cpus[i].cpu_times.nice);
104  }
105 #endif
106  uv_free_cpu_info(cpus, count);
107 
108  err = uv_interface_addresses(&interfaces, &count);
109  ASSERT(err == 0);
110 
111  printf("uv_interface_addresses:\n");
112  for (i = 0; i < count; i++) {
113  printf(" name: %s\n", interfaces[i].name);
114  printf(" internal: %d\n", interfaces[i].is_internal);
115  printf(" physical address: ");
116  printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
117  (unsigned char)interfaces[i].phys_addr[0],
118  (unsigned char)interfaces[i].phys_addr[1],
119  (unsigned char)interfaces[i].phys_addr[2],
120  (unsigned char)interfaces[i].phys_addr[3],
121  (unsigned char)interfaces[i].phys_addr[4],
122  (unsigned char)interfaces[i].phys_addr[5]);
123 
124  if (interfaces[i].address.address4.sin_family == AF_INET) {
125  uv_ip4_name(&interfaces[i].address.address4, buffer, sizeof(buffer));
126  } else if (interfaces[i].address.address4.sin_family == AF_INET6) {
127  uv_ip6_name(&interfaces[i].address.address6, buffer, sizeof(buffer));
128  }
129 
130  printf(" address: %s\n", buffer);
131 
132  if (interfaces[i].netmask.netmask4.sin_family == AF_INET) {
133  uv_ip4_name(&interfaces[i].netmask.netmask4, buffer, sizeof(buffer));
134  printf(" netmask: %s\n", buffer);
135  } else if (interfaces[i].netmask.netmask4.sin_family == AF_INET6) {
136  uv_ip6_name(&interfaces[i].netmask.netmask6, buffer, sizeof(buffer));
137  printf(" netmask: %s\n", buffer);
138  } else {
139  printf(" netmask: none\n");
140  }
141  }
142  uv_free_interface_addresses(interfaces, count);
143 
144  err = uv_os_get_passwd(&pwd);
145  ASSERT(err == 0);
146 
147  printf("uv_os_get_passwd:\n");
148  printf(" euid: %ld\n", pwd.uid);
149  printf(" gid: %ld\n", pwd.gid);
150  printf(" username: %s\n", pwd.username);
151  printf(" shell: %s\n", pwd.shell);
152  printf(" home directory: %s\n", pwd.homedir);
153 
154  pid = uv_os_getpid();
155  ASSERT(pid > 0);
156  printf("uv_os_getpid: %d\n", (int) pid);
157  ppid = uv_os_getppid();
158  ASSERT(ppid > 0);
159  printf("uv_os_getppid: %d\n", (int) ppid);
160 
161  err = uv_os_uname(&uname);
162  ASSERT(err == 0);
163  printf("uv_os_uname:\n");
164  printf(" sysname: %s\n", uname.sysname);
165  printf(" release: %s\n", uname.release);
166  printf(" version: %s\n", uname.version);
167  printf(" machine: %s\n", uname.machine);
168 
169  return 0;
170 }
TEST_IMPL
TEST_IMPL(platform_output)
Definition: test-platform-output.c:27
uv_rusage_t::ru_stime
uv_timeval_t ru_stime
Definition: uv.h:1164
uv_utsname_s::sysname
char sysname[256]
Definition: uv.h:1108
uv_rusage_t
Definition: uv.h:1162
task.h
AF_INET6
#define AF_INET6
Definition: ares_setup.h:208
uv_passwd_s
Definition: uv.h:1099
uv_cpu_info_s
Definition: uv.h:1079
uv_cpu_info
UV_EXTERN int uv_cpu_info(uv_cpu_info_t **cpu_infos, int *count)
Definition: aix.c:986
uv_free_cpu_info
UV_EXTERN void uv_free_cpu_info(uv_cpu_info_t *cpu_infos, int count)
Definition: uv-common.c:816
uv_os_getpid
UV_EXTERN uv_pid_t uv_os_getpid(void)
Definition: unix/core.c:1392
uv_passwd_s::username
char * username
Definition: uv.h:1100
uv_passwd_s::gid
long gid
Definition: uv.h:1102
uv_passwd_s::homedir
char * homedir
Definition: uv.h:1104
string.h
uv_os_get_passwd
UV_EXTERN int uv_os_get_passwd(uv_passwd_t *pwd)
Definition: unix/core.c:1239
uv_pid_t
pid_t uv_pid_t
Definition: unix.h:129
printf
_Use_decl_annotations_ int __cdecl printf(const char *_Format,...)
Definition: cs_driver.c:91
error_ref_leak.err
err
Definition: error_ref_leak.py:35
ASSERT
#define ASSERT(expr)
Definition: task.h:102
uv_rusage_t::ru_majflt
uint64_t ru_majflt
Definition: uv.h:1170
setup.name
name
Definition: setup.py:542
uv_interface_addresses
UV_EXTERN int uv_interface_addresses(uv_interface_address_t **addresses, int *count)
Definition: aix.c:1042
uv_timeval_t::tv_sec
long tv_sec
Definition: uv.h:1153
uv_os_uname
UV_EXTERN int uv_os_uname(uv_utsname_t *buffer)
Definition: unix/core.c:1430
uv_uptime
UV_EXTERN int uv_uptime(double *uptime)
Definition: aix.c:959
uv_free_interface_addresses
UV_EXTERN void uv_free_interface_addresses(uv_interface_address_t *addresses, int count)
Definition: aix.c:1210
uv_passwd_s::shell
char * shell
Definition: uv.h:1103
uv_cwd
UV_EXTERN int uv_cwd(char *buffer, size_t *size)
Definition: unix/core.c:696
buffer
char buffer[1024]
Definition: libuv/docs/code/idle-compute/main.c:8
uv_ip4_name
UV_EXTERN int uv_ip4_name(const struct sockaddr_in *src, char *dst, size_t size)
Definition: uv-common.c:267
uv_utsname_s::release
char release[256]
Definition: uv.h:1109
uv_utsname_s::machine
char machine[256]
Definition: uv.h:1111
uv_interface_address_s
Definition: uv.h:1085
uv_utsname_s::version
char version[256]
Definition: uv.h:1110
uv.h
uv_passwd_s::uid
long uid
Definition: uv.h:1101
uv_rusage_t::ru_maxrss
uint64_t ru_maxrss
Definition: uv.h:1165
uv_ip6_name
UV_EXTERN int uv_ip6_name(const struct sockaddr_in6 *src, char *dst, size_t size)
Definition: uv-common.c:272
count
int * count
Definition: bloaty/third_party/googletest/googlemock/test/gmock_stress_test.cc:96
uv_interface_address_s::address4
struct sockaddr_in address4
Definition: uv.h:1090
uv_interface_address_s::netmask6
struct sockaddr_in6 netmask6
Definition: uv.h:1095
uv_getrusage
UV_EXTERN int uv_getrusage(uv_rusage_t *rusage)
Definition: unix/core.c:958
uv_timeval_t::tv_usec
long tv_usec
Definition: uv.h:1154
thread_ctx::pid
pthread_t pid
Definition: test-fs.c:3494
uv_rusage_t::ru_utime
uv_timeval_t ru_utime
Definition: uv.h:1163
uv_interface_address_s::netmask4
struct sockaddr_in netmask4
Definition: uv.h:1094
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
uv_os_getppid
UV_EXTERN uv_pid_t uv_os_getppid(void)
Definition: unix/core.c:1397
uv_resident_set_memory
UV_EXTERN int uv_resident_set_memory(size_t *rss)
Definition: aix.c:935
uv_get_process_title
UV_EXTERN int uv_get_process_title(char *buffer, size_t size)
Definition: aix.c:906
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
uv_interface_address_s::address6
struct sockaddr_in6 address6
Definition: uv.h:1091
uv_utsname_s
Definition: uv.h:1107


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:30