summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am5
-rw-r--r--tests/nft-sync-test.c61
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..df0680f
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,5 @@
+include $(top_srcdir)/Make_global.am
+
+check_PROGRAMS = nft-sync-test
+
+nft_sync_test_SOURCES = nft-sync-test.c ../src/tcp.c ../src/msg_buff.c
diff --git a/tests/nft-sync-test.c b/tests/nft-sync-test.c
new file mode 100644
index 0000000..a247d64
--- /dev/null
+++ b/tests/nft-sync-test.c
@@ -0,0 +1,61 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "../include/tcp.h"
+#include "../include/proto.h"
+#include "../include/msg_buff.h"
+
+int main(void)
+{
+ struct tcp_client *c;
+ struct tcp_conf conf = {
+ .ipproto = AF_INET,
+ .port = 1234,
+ .client = {
+ .inet_addr = { inet_addr("127.0.0.1") },
+ },
+ };
+ struct nft_sync_hdr *hdr;
+ struct msg_buff *msgb;
+ char buf[1024];
+ fd_set fds;
+
+ msgb = msgb_alloc(NFTS_MAX_REQUEST);
+ if (msgb == NULL) {
+ perror("msgb_alloc");
+ exit(EXIT_FAILURE);
+ }
+
+ hdr = msgb_put(msgb, sizeof(struct nft_sync_hdr) + strlen("fetch"));
+ hdr->len = htonl(sizeof(struct nft_sync_hdr) + strlen("fetch"));
+ memcpy(hdr->data, "fetch", strlen("fetch"));
+
+ c = tcp_client_create(&conf);
+ if (c == NULL) {
+ fprintf(stderr, "cannot initialize TCP client\n");
+ exit(EXIT_FAILURE);
+ }
+
+ FD_ZERO(&fds);
+ FD_SET(tcp_client_get_fd(c), &fds);
+ /* Wait for connection ... */
+ select(tcp_client_get_fd(c) + 1, NULL, &fds, NULL, NULL);
+
+ if (tcp_client_send(c, msgb_data(msgb), msgb_len(msgb)) < 0) {
+ perror("cannot send to socket");
+ exit(EXIT_FAILURE);
+ }
+
+ FD_ZERO(&fds);
+ FD_SET(tcp_client_get_fd(c), &fds);
+ /* Wait to receive data after sending request ... */
+ select(tcp_client_get_fd(c) + 1, &fds, NULL, NULL, NULL);
+
+ if (tcp_client_recv(c, buf, sizeof(buf)) < 0) {
+ perror("cannot send to socket");
+ exit(EXIT_FAILURE);
+ }
+ printf("[TEST OK] Received: %s\n", buf + sizeof(struct nft_sync_hdr));
+ tcp_client_destroy(c);
+}