Browse Source

Have examples run in the py27 environment and make them work

It is great to ensure that the examples that tooz has actually run
during testing time, so enable this as well as adjust the examples
to create unique group ids and run for a limited amount of time instead
of running forever (and fix a few other brokeness)...

Change-Id: I573cf5946a1d3f13862c0c28cf3a5d7fc6178873
changes/71/122571/5
Joshua Harlow 7 years ago
parent
commit
fd730c42a3
  1. 2
      examples/coordinator.py
  2. 5
      examples/coordinator_heartbeat.py
  3. 11
      examples/group_membership.py
  4. 12
      examples/group_membership_watch.py
  5. 20
      examples/leader_election.py
  6. 10
      run-examples.sh
  7. 1
      tox.ini

2
examples/coordinator.py

@ -1,5 +1,5 @@
from tooz import coordination
coordinator = coordination.get_coordinator('zookeeper://localhost', b'host-1')
coordinator = coordination.get_coordinator('kazoo://localhost', b'host-1')
coordinator.start()
coordinator.stop()

5
examples/coordinator_heartbeat.py

@ -2,10 +2,13 @@ import time
from tooz import coordination
ALIVE_TIME = 5
coordinator = coordination.get_coordinator('memcached://localhost', b'host-1')
coordinator.start()
while True:
start = time.time()
while time.time() - start < ALIVE_TIME:
coordinator.heartbeat()
time.sleep(0.1)

11
examples/group_membership.py

@ -1,14 +1,19 @@
import uuid
import six
from tooz import coordination
coordinator = coordination.get_coordinator('zookeeper://localhost', b'host-1')
coordinator = coordination.get_coordinator('kazoo://localhost', b'host-1')
coordinator.start()
# Create a group
request = coordinator.create_group(b"my group")
group = six.binary_type(six.text_type(uuid.uuid4()).encode('ascii'))
request = coordinator.create_group(group)
request.get()
# Join a group
request = coordinator.join_group(b"my group")
request = coordinator.join_group(group)
request.get()
coordinator.stop()

12
examples/group_membership_watch.py

@ -1,10 +1,15 @@
import uuid
import six
from tooz import coordination
coordinator = coordination.get_coordinator('zookeeper://localhost', b'host-1')
coordinator = coordination.get_coordinator('kazoo://localhost', b'host-1')
coordinator.start()
# Create a group
request = coordinator.create_group(b"my group")
group = six.binary_type(six.text_type(uuid.uuid4()).encode('ascii'))
request = coordinator.create_group(group)
request.get()
@ -13,6 +18,5 @@ def group_joined(event):
print(event.group_id, event.member_id)
coordinator.watch_join_group(b"my group", group_joined)
coordinator.watch_join_group(group, group_joined)
coordinator.stop()

20
examples/leader_election.py

@ -1,14 +1,21 @@
import time
import uuid
import six
from tooz import coordination
coordinator = coordination.get_coordinator('zookeeper://localhost', b'host-1')
ALIVE_TIME = 1
coordinator = coordination.get_coordinator('kazoo://localhost', b'host-1')
coordinator.start()
# Create a group
request = coordinator.create_group(b"my group")
group = six.binary_type(six.text_type(uuid.uuid4()).encode('ascii'))
request = coordinator.create_group(group)
request.get()
# Join a group
request = coordinator.join_group(b"my group")
request = coordinator.join_group(group)
request.get()
@ -18,11 +25,12 @@ def when_i_am_elected_leader(event):
# Propose to be a leader for the group
coordinator.watch_elected_as_leader(b"my_group",
when_i_am_elected_leader)
coordinator.watch_elected_as_leader(group, when_i_am_elected_leader)
while True:
start = time.time()
while time.time() - start < ALIVE_TIME:
coordinator.heartbeat()
coordinator.run_watchers()
time.sleep(0.1)
coordinator.stop()

10
run-examples.sh

@ -0,0 +1,10 @@
#!/bin/bash
set -e
python_version=$(python --version 2>&1)
echo "Running using '$python_version'"
for filename in examples/*.py; do
echo "Activating '$filename'"
python $filename
done

1
tox.ini

@ -20,6 +20,7 @@ commands = {posargs}
deps = {[testenv]deps}
doc8
commands = bash -x {toxinidir}/setup-test-env.sh python setup.py testr --slowest --testr-args="{posargs}"
bash -x {toxinidir}/setup-test-env.sh {toxinidir}/run-examples.sh
doc8 doc/source
[testenv:cover]

Loading…
Cancel
Save