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
7 changed files with 46 additions and 15 deletions
  1. +1
    -1
      examples/coordinator.py
  2. +4
    -1
      examples/coordinator_heartbeat.py
  3. +8
    -3
      examples/group_membership.py
  4. +8
    -4
      examples/group_membership_watch.py
  5. +14
    -6
      examples/leader_election.py
  6. +10
    -0
      run-examples.sh
  7. +1
    -0
      tox.ini

+ 1
- 1
examples/coordinator.py View File

@ -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()

+ 4
- 1
examples/coordinator_heartbeat.py View File

@ -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)


+ 8
- 3
examples/group_membership.py View File

@ -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()

+ 8
- 4
examples/group_membership_watch.py View File

@ -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()

+ 14
- 6
examples/leader_election.py View File

@ -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
- 0
run-examples.sh View File

@ -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
- 0
tox.ini View File

@ -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