1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#include "test.h"
#include "mongo.h"
#include <errno.h>
#include <sys/socket.h>
#include "libmongo-private.h"
void
test_mongo_packet_recv (void)
{
mongo_connection c, *conn;
mongo_packet *p;
bson *b;
c.fd = -1;
ok (mongo_packet_recv (NULL) == NULL,
"mongo_packet_recv() fails with a NULL connection");
ok (errno == ENOTCONN,
"mongo_packet_recv() sets errno to ENOTCONN if connection is NULL");
ok (mongo_packet_recv (&c) == NULL,
"mongo_packet_recv() fails if the FD is less than zero");
ok (errno == EBADF,
"mongo_packet_recv() sets errno to EBADF is the FD is bad");
begin_network_tests (2);
b = bson_new ();
bson_append_int32 (b, "getnonce", 1);
bson_finish (b);
p = mongo_wire_cmd_custom (42, config.db, 0, b);
bson_free (b);
conn = mongo_connect (config.primary_host, config.primary_port);
mongo_packet_send (conn, p);
mongo_wire_packet_free (p);
ok ((p = mongo_packet_recv (conn)) != NULL,
"mongo_packet_recv() works");
mongo_wire_packet_free (p);
close (conn->fd);
sleep (3);
ok (mongo_packet_recv (conn) == NULL,
"mongo_packet_recv() fails on a closed socket");
mongo_disconnect (conn);
end_network_tests ();
}
RUN_TEST (6, mongo_packet_recv);
|