106040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes/* 206040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * Copyright (C) 2013 The Android Open Source Project 306040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * 406040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 506040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * you may not use this file except in compliance with the License. 606040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * You may obtain a copy of the License at 706040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * 806040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 906040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * 1006040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * Unless required by applicable law or agreed to in writing, software 1106040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 1206040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1306040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * See the License for the specific language governing permissions and 1406040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes * limitations under the License. 1506040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes */ 1606040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes 1706040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes#include <gtest/gtest.h> 1806040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes 1906040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes#include <sys/statvfs.h> 2006040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes 2106040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes#include <sys/types.h> 2206040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes#include <sys/stat.h> 2306040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes#include <fcntl.h> 2406040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes 253d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes#include <string> 263d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes 27db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughestemplate <typename StatVfsT> void Check(StatVfsT& sb) { 283d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes EXPECT_EQ(4096U, sb.f_bsize); 293d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes EXPECT_EQ(0U, sb.f_bfree); 303d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes EXPECT_EQ(0U, sb.f_ffree); 313d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes EXPECT_EQ(0U, sb.f_fsid); 323d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes EXPECT_EQ(255U, sb.f_namemax); 3306040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes} 3406040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes 35db1ea3474899ebbd783aba872d3005f95a816d0fElliott HughesTEST(sys_statvfs, statvfs) { 3606040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes struct statvfs sb; 37db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes ASSERT_EQ(0, statvfs("/proc", &sb)); 38db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes Check(sb); 39db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes} 40db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes 41db1ea3474899ebbd783aba872d3005f95a816d0fElliott HughesTEST(sys_statvfs, statvfs64) { 42db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes struct statvfs64 sb; 43db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes ASSERT_EQ(0, statvfs64("/proc", &sb)); 44db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes Check(sb); 45db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes} 4606040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes 47db1ea3474899ebbd783aba872d3005f95a816d0fElliott HughesTEST(sys_statvfs, fstatvfs) { 48db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes struct statvfs sb; 493d305f1d62107d5261bad1c45a0a441d98dc4d41Elliott Hughes int fd = open("/proc", O_RDONLY); 5006040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes ASSERT_EQ(0, fstatvfs(fd, &sb)); 5106040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes close(fd); 52db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes Check(sb); 53db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes} 54db1ea3474899ebbd783aba872d3005f95a816d0fElliott HughesTEST(sys_statvfs, fstatvfs64) { 55db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes struct statvfs64 sb; 56db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes int fd = open("/proc", O_RDONLY); 57db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes ASSERT_EQ(0, fstatvfs64(fd, &sb)); 58db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes close(fd); 59db1ea3474899ebbd783aba872d3005f95a816d0fElliott Hughes Check(sb); 6006040fd75c1edff9e5ffb2b3d3e2a6e66d57c11dElliott Hughes} 61