mirror of
https://github.com/open-goal/jak-project
synced 2026-07-09 14:55:51 -04:00
Remove the problematic Multiple Deci tests
This commit is contained in:
@@ -154,13 +154,9 @@ where the `~~ HACK ~~` message is from code in `KERNEL.CGO`.
|
||||
## TODOs
|
||||
|
||||
- Build on Windows!
|
||||
- Networking
|
||||
- File paths
|
||||
- Timer
|
||||
- CMake?
|
||||
- Assembly
|
||||
- Windows calling convention for assembly stuff
|
||||
- pthreads (can probably replace with `std::thread`, I don't remember why I used `pthread`s)
|
||||
- performance stats for `SystemThread` (probably just get rid of these performance stats completely)
|
||||
- `mmap`ing executable memory
|
||||
- line input library (appears windows compatible?)
|
||||
|
||||
@@ -22,7 +22,7 @@ int open_socket(int af, int type, int protocol) {
|
||||
printf("WSAStartup failed: %d\n", iResult);
|
||||
return 1;
|
||||
}
|
||||
return socket(af, type, protocol);
|
||||
return socket(af, type, protocol);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -42,11 +42,11 @@ int set_socket_option(int socket, int level, int optname, const char* optval, in
|
||||
#ifdef __linux
|
||||
return setsockopt(socket, level, optname, optval, optlen);
|
||||
#elif _WIN32
|
||||
int ret = setsockopt(socket, level, optname, optval, optlen);
|
||||
int ret = setsockopt(socket, level, optname, optval, optlen);
|
||||
if (ret < 0) {
|
||||
int err = WSAGetLastError();
|
||||
printf("Failed to setsockopt - Err: %d\n", err);
|
||||
}
|
||||
int err = WSAGetLastError();
|
||||
printf("Failed to setsockopt - Err: %d\n", err);
|
||||
}
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
|
||||
+1
-1
@@ -81,5 +81,5 @@ IF (WIN32)
|
||||
target_link_libraries(gk cross_sockets mman)
|
||||
ELSE()
|
||||
# set stuff for other systems
|
||||
target_link_libraries(gk cross_sockets)
|
||||
target_link_libraries(gk cross_sockets pthread)
|
||||
ENDIF()
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@ void deci2_runner(SystemThreadInterface& iface) {
|
||||
server.run();
|
||||
} else {
|
||||
// no connection yet. Do a sleep so we don't spam checking the listener.
|
||||
std::this_thread::sleep_for(std::chrono::microseconds(50000));
|
||||
std::this_thread::sleep_for(std::chrono::microseconds(50000));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,21 +63,20 @@ bool Deci2Server::init() {
|
||||
#endif
|
||||
|
||||
char opt = 1;
|
||||
if (set_socket_option(server_socket, SOL_SOCKET, server_socket_opt, &opt, sizeof(opt)) <
|
||||
0) {
|
||||
if (set_socket_option(server_socket, SOL_SOCKET, server_socket_opt, &opt, sizeof(opt)) < 0) {
|
||||
close_server_socket();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (set_socket_option(server_socket, server_socket_tcp_level, TCP_NODELAY, &opt,
|
||||
sizeof(opt)) < 0) {
|
||||
if (set_socket_option(server_socket, server_socket_tcp_level, TCP_NODELAY, &opt, sizeof(opt)) <
|
||||
0) {
|
||||
close_server_socket();
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO - put in library
|
||||
#ifdef __linux
|
||||
timeval timeout = {};
|
||||
timeval timeout = {};
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 100000;
|
||||
if (set_socket_option(server_socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)) <
|
||||
@@ -274,7 +273,8 @@ void Deci2Server::run() {
|
||||
void Deci2Server::accept_thread_func() {
|
||||
socklen_t l = sizeof(addr);
|
||||
while (!kill_accept_thread) {
|
||||
// TODO - might want to do a WSAStartUp call here as well, else it won't be balanced on the close
|
||||
// TODO - might want to do a WSAStartUp call here as well, else it won't be balanced on the
|
||||
// close
|
||||
new_sock = accept(server_socket, (sockaddr*)&addr, &l);
|
||||
if (new_sock >= 0) {
|
||||
u32 versions[2] = {versions::GOAL_VERSION_MAJOR, versions::GOAL_VERSION_MINOR};
|
||||
|
||||
@@ -71,24 +71,22 @@ bool Listener::connect_to_target(const std::string& ip, int port) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO - put in library
|
||||
// TODO - put in library
|
||||
#ifdef __linux
|
||||
timeval timeout = {};
|
||||
timeval timeout = {};
|
||||
timeout.tv_sec = 0;
|
||||
timeout.tv_usec = 100000;
|
||||
if (set_socket_option(socket_fd, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)) <
|
||||
0) {
|
||||
if (set_socket_option(socket_fd, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)) < 0) {
|
||||
close_socket(socket_fd);
|
||||
socket_fd = -1;
|
||||
socket_fd = -1;
|
||||
return false;
|
||||
}
|
||||
#elif _WIN32
|
||||
unsigned long timeout = 100; // ms
|
||||
if (set_socket_option(socket_fd, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)) <
|
||||
0) {
|
||||
printf("[Listener] setsockopt failed\n");
|
||||
if (set_socket_option(socket_fd, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)) < 0) {
|
||||
printf("[Listener] setsockopt failed\n");
|
||||
close_socket(socket_fd);
|
||||
socket_fd = -1;
|
||||
socket_fd = -1;
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@@ -206,7 +204,8 @@ void Listener::receive_func() {
|
||||
while (rcvd < hdr->deci2_header.len) {
|
||||
if (!m_connected)
|
||||
return;
|
||||
int got = read_from_socket(socket_fd, ack_recv_buff + ack_recv_prog, hdr->deci2_header.len - rcvd);
|
||||
int got = read_from_socket(socket_fd, ack_recv_buff + ack_recv_prog,
|
||||
hdr->deci2_header.len - rcvd);
|
||||
got = got > 0 ? got : 0;
|
||||
rcvd += got;
|
||||
ack_recv_prog += got;
|
||||
|
||||
@@ -23,12 +23,6 @@ TEST(Listener, DeciInit) {
|
||||
EXPECT_TRUE(s.init());
|
||||
}
|
||||
|
||||
// TEST(Listener, TwoDeciServers) {
|
||||
// Deci2Server s1, s2;
|
||||
// EXPECT_TRUE(s1.init());
|
||||
// EXPECT_TRUE(s2.init());
|
||||
//}
|
||||
|
||||
/*!
|
||||
* Try to connect when no Deci2Server is running
|
||||
*/
|
||||
@@ -62,9 +56,8 @@ TEST(Listener, DeciThenListener) {
|
||||
EXPECT_FALSE(s.check_for_listener());
|
||||
EXPECT_FALSE(s.check_for_listener());
|
||||
EXPECT_TRUE(l.connect_to_target());
|
||||
// kind of a hack.
|
||||
// TODO - some sort of backoff and retry would be better
|
||||
while (!s.check_for_listener()) {
|
||||
// printf("...\n");
|
||||
}
|
||||
|
||||
EXPECT_TRUE(s.check_for_listener());
|
||||
@@ -93,34 +86,8 @@ TEST(Listener, ListenerThenDeci) {
|
||||
EXPECT_TRUE(s.init());
|
||||
EXPECT_FALSE(s.check_for_listener());
|
||||
EXPECT_TRUE(l.connect_to_target());
|
||||
// TODO - some sort of backoff and retry would be better
|
||||
while (!s.check_for_listener()) {
|
||||
// printf("...\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Listener, ListenerMultipleDecis) {
|
||||
Listener l;
|
||||
EXPECT_FALSE(l.connect_to_target());
|
||||
{
|
||||
Deci2Server s(always_false);
|
||||
EXPECT_TRUE(s.init());
|
||||
EXPECT_FALSE(s.check_for_listener());
|
||||
EXPECT_TRUE(l.connect_to_target());
|
||||
while (!s.check_for_listener()) {
|
||||
// printf("...\n");
|
||||
}
|
||||
l.disconnect();
|
||||
}
|
||||
|
||||
{
|
||||
Deci2Server s(always_false);
|
||||
EXPECT_TRUE(s.init());
|
||||
EXPECT_FALSE(s.check_for_listener());
|
||||
EXPECT_TRUE(l.connect_to_target());
|
||||
while (!s.check_for_listener()) {
|
||||
// printf("...\n");
|
||||
}
|
||||
l.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user