[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [bridgedb/master] Fix the interface between bridgedb and the descriptor generator.
commit fd4d3007997b2d827fc95b30edbcde93e331f3e0
Author: Isis Lovecruft <isis@xxxxxxxxxxxxxx>
Date: Sat Oct 26 08:49:18 2013 +0000
Fix the interface between bridgedb and the descriptor generator.
---
lib/bridgedb/opt.py | 27 +++++++++++++++++++++++----
lib/bridgedb/runner.py | 26 ++++++++++++--------------
setup.py | 9 +++++----
3 files changed, 40 insertions(+), 22 deletions(-)
diff --git a/lib/bridgedb/opt.py b/lib/bridgedb/opt.py
index bedfaec..d3532b6 100644
--- a/lib/bridgedb/opt.py
+++ b/lib/bridgedb/opt.py
@@ -53,8 +53,6 @@ class BaseOptions(usage.Options):
private relays acting as bridges into the Tor network. See `bridgedb
<command> --help` for addition help.""")
- optFlags = [['verbose', 'v', 'Log to stdout']]
-
def opt_rundir(self, rundir):
"""Change to this directory"""
if not rundir:
@@ -75,6 +73,19 @@ class BaseOptions(usage.Options):
usage.Options.__init__(self)
self['rundir'] = os.path.join(os.getcwdu(), 'run')
self['version'] = self.opt_version
+ self['verbosity'] = 30
+
+ def opt_quiet(self):
+ """Decrease verbosity"""
+ # We use '10' because then it corresponds to the log levels
+ self['verbosity'] -= 10
+
+ def opt_verbose(self):
+ """Increase verbosity"""
+ self['verbosity'] += 10
+
+ opt_q = opt_quiet
+ opt_v = opt_verbose
def opt_version(self):
"""Display BridgeDB's version and exit."""
@@ -90,7 +101,6 @@ class TestOptions(BaseOptions):
optFlags = [['coverage', 'c', 'Generate coverage statistics']]
optParameters = [
- ['descriptors', 'n', 1000, 'Generate <N> fake bridge descriptors'],
['file', 'f', None, 'Run tests in specific file(s) (trial only)'],
['unittests', 'u', False, 'Run unittests in bridgedb.Tests'],
['trial', 't', True, 'Run twisted.trial tests in bridgedb.test']]
@@ -108,6 +118,14 @@ class TestOptions(BaseOptions):
"""Parse any additional arguments after the options and flags."""
self['test_args'] = args
+class MockOptions(BaseOptions):
+ """Suboptions for creating necessary conditions for testing purposes."""
+
+ optParameters = [
+ ['descriptors', 'n', 1000,
+ '''Generate <n> mock bridge descriptor sets
+ (types: netstatus, extrainfo, server)''']]
+
class MainOptions(BaseOptions):
"""Main commandline options parser for BridgeDB."""
@@ -118,4 +136,5 @@ class MainOptions(BaseOptions):
optParameters = [
['config', 'c', 'bridgedb.conf', 'Configuration file']]
subCommands = [
- ['test', None, TestOptions, "Run twisted.trial tests or unittests"]]
+ ['test', None, TestOptions, "Run twisted.trial tests or unittests"],
+ ['mock', None, MockOptions, "Generate a testing environment"]]
diff --git a/lib/bridgedb/runner.py b/lib/bridgedb/runner.py
index 7f38e95..3ba61ec 100644
--- a/lib/bridgedb/runner.py
+++ b/lib/bridgedb/runner.py
@@ -32,24 +32,22 @@ def generateDescriptors(options):
"""
import subprocess
+ proc = None
+ rundir = options['rundir']
script = 'gen_bridge_descriptors'
count = options.subOptions['descriptors']
try:
- print("Generating %s bridge descriptors..." % str(howmany))
- proc = subprocess.Popen([script, str(count)])
- except Exception as exc:
- print(exc)
- print("There was an error generating bridge descriptors.")
- else:
- proc.wait()
- if proc.returncode:
- print("There was an error generating bridge descriptors. (%s: %d)"
- % ("Returncode", proc.returncode))
- else:
- print("Sucessfully bridge generated descriptors.")
+ proc = subprocess.Popen([script, '-n', str(count)],
+ close_fds=True, cwd=rundir)
finally:
- del subprocess
- return
+ if proc is not None:
+ proc.wait()
+ if proc.returncode:
+ print("There was an error generating bridge descriptors.",
+ "(Returncode: %d)" % proc.returncode)
+ else:
+ print("Sucessfully bridge generated descriptors.")
+ del subprocess
def runTrial(options):
"""Run Twisted trial based unittests, optionally with coverage.
diff --git a/setup.py b/setup.py
index d01f646..f73347f 100644
--- a/setup.py
+++ b/setup.py
@@ -74,7 +74,6 @@ install_i18n = os.path.join('bridgedb', 'i18n')
# Directory to install docs, license, and other text resources into:
install_docs = os.path.join('share', 'doc', 'bridgedb')
-
def get_cmdclass():
"""Get our cmdclass dictionary for use in setuptool.setup().
@@ -255,11 +254,13 @@ setuptools.setup(
url='https://www.torproject.org',
download_url='https://gitweb.torproject.org/bridgedb.git',
package_dir={'': 'lib'},
- packages=['bridgedb'],
+ packages=['bridgedb',
+ 'bridgedb.parse',
+ 'bridgedb.test'],
scripts=['scripts/bridgedb',
'scripts/gen_bridge_descriptors'],
- extras_require={'test': ["sure>=0.4.5",
- "trialcoverage>=0.3.12"]},
+ extras_require={'test': ["sure==0.4.5",
+ "trialcoverage==0.3.12"]},
zip_safe=False,
cmdclass=get_cmdclass(),
include_package_data=True,
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits