Lines Matching +full:peer +full:- +full:hub
5 #include "qemu/config-file.h"
9 #include "chardev/char-fe.h"
12 #include "qapi/qapi-commands-char.h"
14 #include "qom/qom-qobject.h"
15 #include "io/channel-socket.h"
16 #include "qapi/qobject-input-visitor.h"
17 #include "qapi/qapi-visit-sockets.h"
18 #include "socket-helpers.h"
43 return sizeof(h->read_buf) - h->read_count; in fe_can_read()
52 memcpy(h->read_buf + h->read_count, buf, size); in fe_read()
53 h->read_count += size; in fe_read()
62 h->last_event = event; in fe_event()
68 h->openclose_count++; in fe_event()
70 if (h->is_open == new_open_state) { in fe_event()
71 h->openclose_mismatch = true; in fe_event()
73 h->is_open = new_open_state; in fe_event()
87 opts = qemu_opts_create(qemu_find_opts("chardev"), "console-label", in char_console_test_subprocess()
139 opts = qemu_opts_create(qemu_find_opts("chardev"), "ringbuf-label", in char_ringbuf_test()
148 opts = qemu_opts_create(qemu_find_opts("chardev"), "ringbuf-label", in char_ringbuf_test()
160 data = qmp_ringbuf_read("ringbuf-label", 4, false, 0, &error_abort); in char_ringbuf_test()
164 data = qmp_ringbuf_read("ringbuf-label", 4, false, 0, &error_abort); in char_ringbuf_test()
171 opts = qemu_opts_create(qemu_find_opts("chardev"), "memory-label", in char_ringbuf_test()
191 opts = qemu_opts_create(qemu_find_opts("chardev"), "mux-label", in char_mux_test()
201 qmp_chardev_remove("mux-label", &error_abort); in char_mux_test()
202 qmp_chardev_remove("mux-label-base", &error_abort); in char_mux_test()
204 opts = qemu_opts_create(qemu_find_opts("chardev"), "mux-label", in char_mux_test()
232 base = qemu_chr_find("mux-label-base"); in char_mux_test()
247 qemu_chr_be_event(chr, -1); in char_mux_test()
249 g_assert_cmpint(h2.last_event, ==, -1); in char_mux_test()
259 qemu_chr_be_event(chr, -1); in char_mux_test()
260 g_assert_cmpint(h1.last_event, ==, -1); in char_mux_test()
348 data = qmp_ringbuf_read("mux-label-base", 128, false, 0, &error_abort); in char_mux_test()
354 qmp_chardev_remove("mux-label", &error); in char_mux_test()
355 g_assert_cmpstr(error_get_pretty(error), ==, "Chardev 'mux-label' is busy"); in char_mux_test()
359 qmp_chardev_remove("mux-label", &error_abort); in char_mux_test()
365 Chardev *hub, *chr1, *chr2, *base; in char_hub_test() local
375 * Create invalid hub in char_hub_test()
376 * 1. Create hub without a 'chardevs.N' defined (expect error) in char_hub_test()
380 qemu_opt_set(opts, "backend", "hub", &error_abort); in char_hub_test()
381 hub = qemu_chr_new_from_opts(opts, NULL, &error); in char_hub_test()
383 "hub: 'chardevs' list is not defined"); in char_hub_test()
389 * Create invalid hub in char_hub_test()
391 * 2. Create hub which refers mux in char_hub_test()
392 * 3. Create hub which refers chardev already attached in char_hub_test()
406 qemu_opt_set(opts, "backend", "hub", &error_abort); in char_hub_test()
408 hub = qemu_chr_new_from_opts(opts, NULL, &error); in char_hub_test()
410 "hub: multiplexers and hub devices can't be " in char_hub_test()
412 "not be a hub device or have 'mux=on' enabled"); in char_hub_test()
419 qemu_opt_set(opts, "backend", "hub", &error_abort); in char_hub_test()
420 qemu_opt_set(opts, "chardevs.0", "chr0-base", &error_abort); in char_hub_test()
421 hub = qemu_chr_new_from_opts(opts, NULL, &error); in char_hub_test()
423 "chardev 'chr0-base' is already in use"); in char_hub_test()
432 * Create invalid hub with more than maximum allowed backends in char_hub_test()
434 * hub (expect error) in char_hub_test()
458 * Create hub with 2 backend chardevs and 1 frontend and perform in char_hub_test()
462 * 3. Create hub which refers 2 backend chardevs in char_hub_test()
463 * 4. Attach hub to a frontend in char_hub_test()
464 * 5. Attach hub to a frontend second time (expect error) in char_hub_test()
468 * 9. Finilize frontend, hub and backend chardevs in correct order in char_hub_test()
492 qemu_opt_set(opts, "backend", "hub", &error_abort); in char_hub_test()
495 hub = qemu_chr_new_from_opts(opts, NULL, &error_abort); in char_hub_test()
496 g_assert_nonnull(hub); in char_hub_test()
499 /* Attach hub to a frontend */ in char_hub_test()
500 qemu_chr_fe_init(&chr_be, hub, &error_abort); in char_hub_test()
510 qemu_chr_fe_init(&chr_be, hub, &error); in char_hub_test()
576 * 4. Create hub which refers 2 backend chardevs in char_hub_test()
577 * 5. Attach hub to a frontend in char_hub_test()
579 * 7. Finilize frontend, hub and backend chardevs in correct order in char_hub_test()
582 gchar *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); in char_hub_test()
626 qemu_opt_set(opts, "backend", "hub", &error_abort); in char_hub_test()
630 hub = qemu_chr_new_from_opts(opts, NULL, &error_abort); in char_hub_test()
631 g_assert_nonnull(hub); in char_hub_test()
634 /* Attach hub to a frontend */ in char_hub_test()
635 qemu_chr_fe_init(&chr_be, hub, &error_abort); in char_hub_test()
676 != -1) { in char_hub_test()
683 g_assert_cmpint(ret, ==, -1); in char_hub_test()
697 while ((ret = read(fd, buf, MIN(sizeof(buf), len))) != -1 && len > 0) { in char_hub_test()
698 len -= ret; in char_hub_test()
781 "Sec-WebSocket-Accept:", in websock_check_http_headers()
782 "Sec-WebSocket-Protocol: binary\r\n" }; in websock_check_http_headers()
806 qemu_chr_fe_write(chr_client->be, ping, sizeof(ping)); in websock_client_read()
809 qemu_chr_fe_write(chr_client->be, binary, sizeof(binary)); in websock_client_read()
812 g_assert(strncmp((char *) buf + 4, "peer requested close", 10) == 0); in websock_client_read()
841 "Sec-WebSocket-Key: o9JHNiS3/0/0zYE1wa3yIw==\r\n" in char_websock_test()
842 "Sec-WebSocket-Version: 13\r\n" in char_websock_test()
843 "Sec-WebSocket-Protocol: binary\r\n\r\n"; in char_websock_test()
887 gchar *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); in char_pipe_test()
911 ret = qemu_chr_fe_write(&be, (void *)"pipe-out", 9); in char_pipe_test()
917 g_assert_cmpstr(buf, ==, "pipe-out"); in char_pipe_test()
921 ret = write(fd, "pipe-in", 8); in char_pipe_test()
936 g_assert_cmpstr(fe.read_buf, ==, "pipe-in"); in char_pipe_test()
1004 be = chr->be; in char_udp_test_internal()
1059 data->event = event; in char_socket_event()
1067 CharBackend *be = data->be; in char_socket_event_with_error()
1068 data->event = event; in char_socket_event_with_error()
1090 data->got_pong = true; in char_socket_read()
1115 fd = ioc->fd; in char_socket_addr_to_opt_str()
1116 ioc->fd = -1; in char_socket_addr_to_opt_str()
1122 switch (addr->type) { in char_socket_addr_to_opt_str()
1125 addr->u.inet.host, in char_socket_addr_to_opt_str()
1126 addr->u.inet.port, in char_socket_addr_to_opt_str()
1132 addr->u.q_unix.path, in char_socket_addr_to_opt_str()
1153 return -1; in char_socket_ping_pong()
1202 * We rely on config->addr containing "wait=off", otherwise in char_socket_server_test()
1208 optstr = char_socket_addr_to_opt_str(config->addr, in char_socket_server_test()
1209 config->fd_pass, in char_socket_server_test()
1231 data.event = -1; in char_socket_server_test()
1236 g_assert(data.event == -1); in char_socket_server_test()
1240 * which just plays ping-pong with us in char_socket_server_test()
1245 g_assert(data.event == -1); in char_socket_server_test()
1247 if (config->wait_connected) { in char_socket_server_test()
1255 while (data.event == -1) { in char_socket_server_test()
1261 data.event = -1; in char_socket_server_test()
1267 g_assert(data.event == -1); in char_socket_server_test()
1275 data.event = -1; in char_socket_server_test()
1278 while (data.event == -1) { in char_socket_server_test()
1341 qio_channel_socket_listen_sync(ioc, config->addr, 1, &error_abort); in char_socket_client_dupid_test()
1350 config->fd_pass, in char_socket_client_dupid_test()
1351 config->reconnect, in char_socket_client_dupid_test()
1375 const char_socket_cb event_cb = config->event_cb; in char_socket_client_test()
1393 qio_channel_socket_listen_sync(ioc, config->addr, 1, &error_abort); in char_socket_client_test()
1399 * which just plays ping-pong with us in char_socket_client_test()
1410 config->fd_pass, in char_socket_client_test()
1411 config->reconnect, in char_socket_client_test()
1421 if (config->reconnect) { in char_socket_client_test()
1438 data.event = -1; in char_socket_client_test()
1443 if (config->reconnect) { in char_socket_client_test()
1444 g_assert(data.event == -1); in char_socket_client_test()
1449 if (config->wait_connected) { in char_socket_client_test()
1452 * This should be a no-op if reconnect is not set. in char_socket_client_test()
1460 * The loop will short-circuit if reconnect was set in char_socket_client_test()
1462 while (data.event == -1) { in char_socket_client_test()
1467 data.event = -1; in char_socket_client_test()
1474 g_assert(data.event == -1); in char_socket_client_test()
1482 data.event = -1; in char_socket_client_test()
1485 while (data.event == -1) { in char_socket_client_test()
1493 if (config->reconnect && !reconnected) { in char_socket_client_test()
1611 opts = qemu_opts_create(qemu_find_opts("chardev"), "serial-id", in char_serial_test()
1631 opts = qemu_opts_create(qemu_find_opts("chardev"), "parallel-id", in char_parallel_test()
1654 char *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); in char_file_fifo_test()
1669 ret = write(fd, "fifo-in", 8); in char_file_fifo_test()
1672 chr = qemu_chardev_new("label-file", TYPE_CHARDEV_FILE, &backend, in char_file_fifo_test()
1684 qmp_chardev_send_break("label-foo", NULL); in char_file_fifo_test()
1686 qmp_chardev_send_break("label-file", NULL); in char_file_fifo_test()
1694 g_assert_cmpstr(fe.read_buf, ==, "fifo-in"); in char_file_fifo_test()
1709 char *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); in char_file_test_internal()
1759 chr = qemu_chr_find("label-null"); in char_null_test()
1762 chr = qemu_chr_new("label-null", "null", NULL); in char_null_test()
1763 chr = qemu_chr_find("label-null"); in char_null_test()
1799 chr = qemu_chr_new("label-invalid", "invalid", NULL); in char_invalid_test()
1811 return -1; in chardev_change_denied()
1820 gchar *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL); in char_hotswap_test()
1882 .u.q_unix.path = (char *)"test-char.sock",
1907 g_test_add_func("/char/hub", char_hub_test); in main()
1919 g_test_add_func("/char/file-fifo", char_file_fifo_test); in main()
1933 g_test_add_data_func("/char/socket/server/wait-conn/" # name, \ in main()
1935 g_test_add_data_func("/char/socket/server/mainloop-fdpass/" # name, \ in main()
1937 g_test_add_data_func("/char/socket/server/wait-conn-fdpass/" # name, \ in main()
1946 { addr, ",reconnect-ms=1000", false, false, char_socket_event }; \ in main()
1948 { addr, ",reconnect-ms=1000", true, false, char_socket_event }; \ in main()
1954 { addr, ",reconnect-ms=1000", true, false, \ in main()
1957 { addr, ",reconnect-ms=1000", false, false, char_socket_event };\ in main()
1960 g_test_add_data_func("/char/socket/client/wait-conn/" # name, \ in main()
1962 g_test_add_data_func("/char/socket/client/mainloop-reconnect/" # name, \ in main()
1964 g_test_add_data_func("/char/socket/client/wait-conn-reconnect/" # name, \ in main()
1966 g_test_add_data_func("/char/socket/client/mainloop-fdpass/" # name, \ in main()
1968 g_test_add_data_func("/char/socket/client/wait-conn-fdpass/" # name, \ in main()
1970 g_test_add_data_func("/char/socket/client/reconnect-error/" # name, \ in main()
1972 g_test_add_data_func("/char/socket/client/dupid-reconnect/" # name, \ in main()
1978 g_test_add_data_func("/char/socket/server/two-clients/tcp", &tcpaddr, in main()
1984 g_test_add_data_func("/char/socket/server/two-clients/unix", &unixaddr, in main()