Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(303)

Side by Side Diff: native_client_sdk/src/libraries/nacl_io_test/socket_test.cc

Issue 21610003: Prepared newlib toolchain for socket implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@headers
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 #include <errno.h> 4 #include <errno.h>
5 #include <fcntl.h> 5 #include <fcntl.h>
6 #include <pthread.h> 6 #include <pthread.h>
7 #include <sys/stat.h> 7 #include <sys/stat.h>
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 EXPECT_LT(ki_socketpair(AF_INET, SOCK_STREAM, 0, NULL), 0); 252 EXPECT_LT(ki_socketpair(AF_INET, SOCK_STREAM, 0, NULL), 0);
253 EXPECT_EQ(errno, EFAULT); 253 EXPECT_EQ(errno, EFAULT);
254 EXPECT_LT(ki_socketpair(AF_UNIX, SOCK_STREAM, 0, sv), 0); 254 EXPECT_LT(ki_socketpair(AF_UNIX, SOCK_STREAM, 0, sv), 0);
255 EXPECT_EQ(errno, EAFNOSUPPORT); 255 EXPECT_EQ(errno, EAFNOSUPPORT);
256 EXPECT_LT(ki_socketpair(AF_INET, SOCK_STREAM, 0, sv), 0); 256 EXPECT_LT(ki_socketpair(AF_INET, SOCK_STREAM, 0, sv), 0);
257 EXPECT_EQ(errno, EPROTONOSUPPORT); 257 EXPECT_EQ(errno, EPROTONOSUPPORT);
258 EXPECT_LT(ki_socketpair(AF_INET6, SOCK_STREAM, 0, sv), 0); 258 EXPECT_LT(ki_socketpair(AF_INET6, SOCK_STREAM, 0, sv), 0);
259 EXPECT_EQ(errno, EPROTONOSUPPORT); 259 EXPECT_EQ(errno, EPROTONOSUPPORT);
260 } 260 }
261 261
262 // These functions don't go through KernelProxy, so they don't require a test
263 // fixture
264
265 static struct in_addr generate_ipv4_addr(int tuple1, int tuple2,
266 int tuple3, int tuple4) {
267 unsigned char addr[4];
268 addr[0] = static_cast<unsigned char>(tuple1);
269 addr[1] = static_cast<unsigned char>(tuple2);
270 addr[2] = static_cast<unsigned char>(tuple3);
271 addr[3] = static_cast<unsigned char>(tuple4);
272 struct in_addr *real_addr = reinterpret_cast<struct in_addr*>(addr);
273 return *real_addr;
274 }
275
276 static struct in6_addr generate_ipv6_addr(int *tuples) {
277 unsigned char addr[16];
278 for (int i = 0; i < 8; i++) {
279 addr[2*i] = (tuples[i] >> 8) & 0xFF;
280 addr[2*i+1] = tuples[i] & 0xFF;
281 }
282 struct in6_addr *real_addr = reinterpret_cast<struct in6_addr*>(addr);
283 return *real_addr;
284 }
285
286 TEST(SocketUtilityFunctions, Inet_ntoa) {
287 char *stringified_addr = inet_ntoa(generate_ipv4_addr(0,0,0,0));
288 ASSERT_TRUE(NULL != stringified_addr);
289 EXPECT_STREQ("0.0.0.0", stringified_addr);
290
291 stringified_addr = inet_ntoa(generate_ipv4_addr(127,0,0,1));
292 ASSERT_TRUE(NULL != stringified_addr);
293 EXPECT_STREQ("127.0.0.1", stringified_addr);
294
295 stringified_addr = inet_ntoa(generate_ipv4_addr(255,255,255,255));
296 ASSERT_TRUE(NULL != stringified_addr);
297 EXPECT_STREQ("255.255.255.255", stringified_addr);
298 }
299
300 TEST(SocketUtilityFunctions, Inet_ntop_ipv4) {
301 char stringified_addr[INET_ADDRSTRLEN];
302
303 struct in_addr real_addr = generate_ipv4_addr(0,0,0,0);
304 EXPECT_TRUE(NULL != inet_ntop(AF_INET, &real_addr,
305 stringified_addr, INET_ADDRSTRLEN));
306 EXPECT_STREQ("0.0.0.0", stringified_addr);
307
308 real_addr = generate_ipv4_addr(127,0,0,1);
309 EXPECT_TRUE(NULL != inet_ntop(AF_INET, &real_addr,
310 stringified_addr, INET_ADDRSTRLEN));
311 EXPECT_STREQ("127.0.0.1", stringified_addr);
312
313 real_addr = generate_ipv4_addr(255,255,255,255);
314 EXPECT_TRUE(NULL != inet_ntop(AF_INET, &real_addr,
315 stringified_addr, INET_ADDRSTRLEN));
316 EXPECT_STREQ("255.255.255.255", stringified_addr);
317 }
318
319 TEST(SocketUtilityFunctions, Inet_ntop_ipv6) {
320 char stringified_addr[INET6_ADDRSTRLEN];
321
322 {
323 int addr_tuples[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
324 struct in6_addr real_addr = generate_ipv6_addr(addr_tuples);
325 EXPECT_TRUE(NULL != inet_ntop(AF_INET6, &real_addr,
326 stringified_addr, INET6_ADDRSTRLEN));
327 EXPECT_STREQ("0:0:0:0:0:0:0:0", stringified_addr);
328 }
329
330 {
331 int addr_tuples[8] = { 0x1234, 0xa, 0x12, 0x0000,
332 0x5678, 0x9abc, 0xdef, 0xffff };
333 struct in6_addr real_addr = generate_ipv6_addr(addr_tuples);
334 EXPECT_TRUE(NULL != inet_ntop(AF_INET6, &real_addr,
335 stringified_addr, INET6_ADDRSTRLEN));
336 EXPECT_STREQ("1234:a:12:0:5678:9abc:def:ffff", stringified_addr);
337 }
338
339 {
340 int addr_tuples[8] = { 0xffff, 0xffff, 0xffff, 0xffff,
341 0xffff, 0xffff, 0xffff, 0xffff };
342 struct in6_addr real_addr = generate_ipv6_addr(addr_tuples);
343 EXPECT_TRUE(NULL != inet_ntop(AF_INET6, &real_addr,
344 stringified_addr, INET6_ADDRSTRLEN));
345 EXPECT_STREQ("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", stringified_addr);
346 }
347 }
348
349 TEST(SocketUtilityFunctions, Inet_ntop_failure) {
350 char addr_name[INET6_ADDRSTRLEN];
351 int addr_tuples[8] = { 0xffff, 0xffff, 0xffff, 0xffff,
352 0xffff, 0xffff, 0xffff, 0xffff };
353 struct in6_addr ipv6_addr = generate_ipv6_addr(addr_tuples);
354 struct in_addr ipv4_addr = generate_ipv4_addr(255,255,255,255);
355
356 EXPECT_TRUE(NULL == inet_ntop(AF_UNIX, &ipv6_addr,
357 addr_name, INET6_ADDRSTRLEN));
358 EXPECT_EQ(errno, EAFNOSUPPORT);
359
360 EXPECT_TRUE(NULL == inet_ntop(AF_INET, &ipv4_addr,
361 addr_name, INET_ADDRSTRLEN - 1));
362 EXPECT_EQ(errno, ENOSPC);
363
364 EXPECT_TRUE(NULL == inet_ntop(AF_INET6, &ipv6_addr,
365 addr_name, INET6_ADDRSTRLEN - 1));
366 EXPECT_EQ(errno, ENOSPC);
367 }
368
262 #endif // PROVIDES_SOCKETPAIR_API 369 #endif // PROVIDES_SOCKETPAIR_API
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698