diff options
| author | Lorenzo Colitti <lorenzo@google.com> | 2016-07-12 01:19:49 +0900 |
|---|---|---|
| committer | Lorenzo Colitti <lorenzo@google.com> | 2016-07-12 12:35:27 +0900 |
| commit | 750e8fcc77c886636ca22d1624eb16537d731969 (patch) | |
| tree | 58630e4dfd13782e9d7ce80b0f4e5eeacd3fbf4f /server/BandwidthControllerTest.cpp | |
| parent | 8e1cee9064af5b2e0d8095d5a6a05953616d7d4c (diff) | |
More test coverage for tethering counter parsing.
Bug: 9580643
Change-Id: Ia2f273b518399f42bfa8efb98445f1ff043bc07e
Diffstat (limited to 'server/BandwidthControllerTest.cpp')
| -rw-r--r-- | server/BandwidthControllerTest.cpp | 48 |
1 files changed, 43 insertions, 5 deletions
diff --git a/server/BandwidthControllerTest.cpp b/server/BandwidthControllerTest.cpp index 5af97496..9a60402d 100644 --- a/server/BandwidthControllerTest.cpp +++ b/server/BandwidthControllerTest.cpp @@ -161,6 +161,11 @@ std::string readSocketClientResponse(int fd) { return std::string(buf, bytesRead); } +void expectNoSocketClientResponse(int fd) { + char buf[64]; + EXPECT_EQ(-1, read(fd, buf, sizeof(buf))); +} + TEST_F(BandwidthControllerTest, TestGetTetherStats) { int socketPair[2]; ASSERT_EQ(0, socketpair(AF_UNIX, SOCK_STREAM, 0, socketPair)); @@ -175,25 +180,58 @@ TEST_F(BandwidthControllerTest, TestGetTetherStats) { "114 wlan0 rmnet0 2373 26 2002 27\n" "114 bt-pan rmnet0 107471 1040 1708806 1450\n" "200 Tethering stats list completed\n"; - mBw.getTetherStats(&cli, filter, err); + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); ASSERT_EQ(expected, readSocketClientResponse(socketPair[1])); addPopenContents(kIPv4TetherCounters); filter = BandwidthController::TetherStats("bt-pan", "rmnet0", -1, -1, -1, -1); expected = "221 bt-pan rmnet0 107471 1040 1708806 1450\n"; - mBw.getTetherStats(&cli, filter, err); + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); ASSERT_EQ(expected, readSocketClientResponse(socketPair[1])); - addPopenContents(kIPv4TetherCounters); filter = BandwidthController::TetherStats("rmnet0", "wlan0", -1, -1, -1, -1); expected = "221 rmnet0 wlan0 2002 27 2373 26\n"; - mBw.getTetherStats(&cli, filter, err); + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); ASSERT_EQ(expected, readSocketClientResponse(socketPair[1])); addPopenContents(kIPv4TetherCounters); filter = BandwidthController::TetherStats("rmnet0", "foo0", -1, -1, -1, -1); expected = "200 Tethering stats list completed\n"; - mBw.getTetherStats(&cli, filter, err); + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); + ASSERT_EQ(expected, readSocketClientResponse(socketPair[1])); + + // No stats with a filter: no error. + addPopenContents(""); + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); + ASSERT_EQ("200 Tethering stats list completed\n", readSocketClientResponse(socketPair[1])); + addPopenContents("foo"); + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); + ASSERT_EQ("200 Tethering stats list completed\n", readSocketClientResponse(socketPair[1])); + + // No stats and empty filter: error. + filter = BandwidthController::TetherStats(); + addPopenContents(""); + ASSERT_EQ(-1, mBw.getTetherStats(&cli, filter, err)); + addPopenContents("foo"); + ASSERT_EQ(-1, mBw.getTetherStats(&cli, filter, err)); + expectNoSocketClientResponse(socketPair[1]); + + // Include only one pair of interfaces and things are fine. + std::vector<std::string> counterLines = android::base::Split(kIPv4TetherCounters, "\n"); + std::vector<std::string> brokenCounterLines = counterLines; + counterLines.resize(4); + std::string counters = android::base::Join(counterLines, "\n") + "\n"; + addPopenContents(counters); + expected = + "114 wlan0 rmnet0 2373 26 2002 27\n" + "200 Tethering stats list completed\n"; + ASSERT_EQ(0, mBw.getTetherStats(&cli, filter, err)); ASSERT_EQ(expected, readSocketClientResponse(socketPair[1])); + + // But if interfaces aren't paired, it's always an error. + counterLines.resize(3); + counters = android::base::Join(counterLines, "\n") + "\n"; + ASSERT_EQ(-1, mBw.getTetherStats(&cli, filter, err)); + expectNoSocketClientResponse(socketPair[1]); } |
