zkutil: explained a test. [#METR-10202]

This commit is contained in:
Michael Kolupaev 2014-04-22 14:55:36 +04:00
parent 052b2bd83b
commit ad3954a28a
3 changed files with 26 additions and 1 deletions

View File

@ -0,0 +1,15 @@
#!/bin/bash
# Добавляет в файрвол правила, не пропускающие пакеты до серверов ZooKeeper.
# Используется для тестирования поведения программ при потере соединения с ZooKeeper.
# yeszk.sh производит обратные изменения.
# Чтобы посмотреть, какие правила сейчас есть, используйте sudo iptables -L и sudo ip6tables -L
sudo iptables -A OUTPUT -d example1 -j DROP
sudo iptables -A OUTPUT -d example2 -j DROP
sudo iptables -A OUTPUT -d example3 -j DROP
sudo ip6tables -A OUTPUT -d example1 -j DROP
sudo ip6tables -A OUTPUT -d example2 -j DROP
sudo ip6tables -A OUTPUT -d example3 -j DROP

View File

@ -0,0 +1,6 @@
#!/bin/bash
# Выполняет действия, обратные nozk.sh
cat nozk.sh | sed 's/-A/-D/g' | bash

View File

@ -2,6 +2,10 @@
namespace zk = org::apache::zookeeper; namespace zk = org::apache::zookeeper;
/** Проверяет, правда ли, что вызовы в zkcpp при просроченной сессии блокируются навсегда.
* Разорвать сессию можно, например, так: `./nozk.sh && sleep 6s && ./yeszk.sh`
*/
void stateChanged(zk::WatchEvent::type event, zk::SessionState::type state, const std::string & path) void stateChanged(zk::WatchEvent::type event, zk::SessionState::type state, const std::string & path)
{ {
std::cout << "state changed; event: " << zk::WatchEvent::toString(event) << ", state: " << zk::SessionState::toString(state) std::cout << "state changed; event: " << zk::WatchEvent::toString(event) << ", state: " << zk::SessionState::toString(state)
@ -29,7 +33,7 @@ int main()
std::cin >> unused; std::cin >> unused;
children.clear(); children.clear();
std::cout << "will getChildren" << std::endl; std::cout << "will getChildren (this call will block forever, which seems to be zkcpp issue)" << std::endl;
ret = zookeeper.getChildren("/", nullptr, children, stat); ret = zookeeper.getChildren("/", nullptr, children, stat);
std::cout << "getChildren returned " << zk::ReturnCode::toString(ret) << std::endl; std::cout << "getChildren returned " << zk::ReturnCode::toString(ret) << std::endl;