mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Support MIPS 64bits for loongson 3A4000/3B3000. v5.0.34
This commit is contained in:
parent
aba6667357
commit
1589858cb0
16 changed files with 543 additions and 185 deletions
92
trunk/3rdparty/st-srs/utest/st_utest_tcp.cpp
vendored
Normal file
92
trunk/3rdparty/st-srs/utest/st_utest_tcp.cpp
vendored
Normal file
|
@ -0,0 +1,92 @@
|
|||
/* SPDX-License-Identifier: MIT */
|
||||
/* Copyright (c) 2021 Winlin */
|
||||
|
||||
#include <st_utest.hpp>
|
||||
|
||||
#include <st.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#define ST_UTEST_PORT 26878
|
||||
#define ST_UTEST_TIMEOUT (100 * SRS_UTIME_MILLISECONDS)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// The utest for ping-pong TCP server coroutine.
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void* tcp_server(void* /*arg*/)
|
||||
{
|
||||
int fd = -1;
|
||||
st_netfd_t stfd = NULL;
|
||||
StFdCleanup(fd, stfd);
|
||||
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
ST_ASSERT_ERROR(fd == -1, fd, "Create socket");
|
||||
|
||||
struct sockaddr_in addr;
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
addr.sin_port = htons(ST_UTEST_PORT);
|
||||
|
||||
int v = 1;
|
||||
int r0 = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &v, sizeof(int));
|
||||
ST_ASSERT_ERROR(r0, r0, "Set SO_REUSEADDR");
|
||||
|
||||
r0 = ::bind(fd, (const sockaddr*)&addr, sizeof(addr));
|
||||
ST_ASSERT_ERROR(r0, r0, "Bind socket");
|
||||
|
||||
r0 = ::listen(fd, 10);
|
||||
ST_ASSERT_ERROR(r0, r0, "Listen socket");
|
||||
|
||||
stfd = st_netfd_open_socket(fd);
|
||||
ST_ASSERT_ERROR(!stfd, fd, "Open ST socket");
|
||||
|
||||
st_netfd_t client = NULL;
|
||||
StStfdCleanup(client);
|
||||
|
||||
client = st_accept(stfd, NULL, NULL, ST_UTEST_TIMEOUT);
|
||||
ST_ASSERT_ERROR(!client, fd, "Accept client");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void* tcp_client(void* /*arg*/)
|
||||
{
|
||||
int fd = -1;
|
||||
st_netfd_t stfd = NULL;
|
||||
StFdCleanup(fd, stfd);
|
||||
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
ST_ASSERT_ERROR(fd == -1, fd, "Create socket");
|
||||
|
||||
struct sockaddr_in addr;
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
|
||||
addr.sin_port = htons(ST_UTEST_PORT);
|
||||
|
||||
stfd = st_netfd_open_socket(fd);
|
||||
ST_ASSERT_ERROR(!stfd, fd, "Open ST socket");
|
||||
|
||||
int r0 = st_connect(stfd, (const sockaddr*)&addr, sizeof(addr), ST_UTEST_TIMEOUT);
|
||||
ST_ASSERT_ERROR(r0, r0, "Connect to server");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VOID TEST(TcpTest, TcpConnection)
|
||||
{
|
||||
st_thread_t svr = st_thread_create(tcp_server, NULL, 1, 0);
|
||||
EXPECT_TRUE(svr != NULL);
|
||||
|
||||
st_thread_t client = st_thread_create(tcp_client, NULL, 1, 0);
|
||||
EXPECT_TRUE(client != NULL);
|
||||
|
||||
ST_COROUTINE_JOIN(svr, r0);
|
||||
ST_COROUTINE_JOIN(client, r1);
|
||||
|
||||
ST_EXPECT_SUCCESS(r0);
|
||||
ST_EXPECT_SUCCESS(r1);
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue