Support pretending that certain iptables commands failed.
Bug: 28362720
Test: see subsequent CL.
Change-Id: Id4db5f481bd94ae04d2a5cf7c5c97be1f000c3c9
diff --git a/server/IptablesBaseTest.cpp b/server/IptablesBaseTest.cpp
index faa7433..f879fe6 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 @@
cmd += argv[i];
}
sCmds.push_back(cmd);
- if (status) {
- *status = 0;
+
+ int ret;
+ if (sReturnValues.size()) {
+ ret = sReturnValues.front();
+ sReturnValues.pop_front();
+ } else {
+ ret = 0;
}
- return 0;
+
+ if (status) {
+ *status = ret;
+ }
+ return ret;
}
int IptablesBaseTest::fakeExecIptables(IptablesTarget target, ...) {
@@ -169,7 +179,12 @@
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 = {};