summaryrefslogtreecommitdiff
path: root/server/IptablesBaseTest.cpp
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2017-02-27 23:01:16 +0900
committerLorenzo Colitti <lorenzo@google.com>2017-02-28 15:35:47 +0900
commit849a11c9bb999115e59e03efd61d108305d2fd55 (patch)
tree676d6d4a710d26ec643737316c5347f0e22f70cf /server/IptablesBaseTest.cpp
parent1e299c63fd42f02f23547690275d4f6f9cd5fcc4 (diff)
downloadnetd-849a11c9bb999115e59e03efd61d108305d2fd55.tar.gz
Support pretending that certain iptables commands failed.
Bug: 28362720 Test: see subsequent CL. Change-Id: Id4db5f481bd94ae04d2a5cf7c5c97be1f000c3c9
Diffstat (limited to 'server/IptablesBaseTest.cpp')
-rw-r--r--server/IptablesBaseTest.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/server/IptablesBaseTest.cpp b/server/IptablesBaseTest.cpp
index faa74330..f879fe67 100644
--- a/server/IptablesBaseTest.cpp
+++ b/server/IptablesBaseTest.cpp
@@ -33,6 +33,7 @@
IptablesBaseTest::IptablesBaseTest() {
sCmds.clear();
sRestoreCmds.clear();
+ sReturnValues.clear();
}
int IptablesBaseTest::fake_android_fork_exec(int argc, char* argv[], int *status, bool, bool) {
@@ -43,10 +44,19 @@ int IptablesBaseTest::fake_android_fork_exec(int argc, char* argv[], int *status
cmd += argv[i];
}
sCmds.push_back(cmd);
+
+ int ret;
+ if (sReturnValues.size()) {
+ ret = sReturnValues.front();
+ sReturnValues.pop_front();
+ } else {
+ ret = 0;
+ }
+
if (status) {
- *status = 0;
+ *status = ret;
}
- return 0;
+ return ret;
}
int IptablesBaseTest::fakeExecIptables(IptablesTarget target, ...) {
@@ -169,7 +179,12 @@ void IptablesBaseTest::expectIptablesRestoreCommands(const ExpectedIptablesComma
sRestoreCmds.clear();
}
+void IptablesBaseTest::setReturnValues(const std::deque<int>& returnValues) {
+ sReturnValues = returnValues;
+}
+
std::vector<std::string> IptablesBaseTest::sCmds = {};
IptablesBaseTest::ExpectedIptablesCommands IptablesBaseTest::sRestoreCmds = {};
std::deque<std::string> IptablesBaseTest::sPopenContents = {};
std::deque<std::string> IptablesBaseTest::sIptablesRestoreOutput = {};
+std::deque<int> IptablesBaseTest::sReturnValues = {};