Merge lp:~hazmat/pyjuju/test-sans-fsync into lp:pyjuju

Proposed by Kapil Thangavelu
Status: Merged
Approved by: Kapil Thangavelu
Approved revision: 544
Merged at revision: 545
Proposed branch: lp:~hazmat/pyjuju/test-sans-fsync
Merge into: lp:pyjuju
Diff against target: 56 lines (+9/-5)
2 files modified
juju/lib/zk.py (+6/-3)
juju/tests/common.py (+3/-2)
To merge this branch: bzr merge lp:~hazmat/pyjuju/test-sans-fsync
Reviewer Review Type Date Requested Status
Clint Byrum (community) Approve
Benjamin Saller (community) Approve
Review via email: mp+112188@code.launchpad.net

Description of the change

disable fsync on zk to speed tests.

[r=bcsaller,clint-fewbar]

The tests exercise zk heavily, and by defaults its configured
for per operation fsync to disk, disabling the fsync greatly
speeds up full test runs.

https://codereview.appspot.com/6331066/

To post a comment you must log in.
Revision history for this message
Kapil Thangavelu (hazmat) wrote :

Reviewers: mp+112188_code.launchpad.net,

Message:
Please take a look.

Description:
Disable fsync on zk to speed tests.

The tests exercise zk heavily, and by defaults its configured
for per operation fsync to disk, disabling the fsync greatly
speeds up full test runs.

https://code.launchpad.net/~hazmat/juju/test-sans-fsync/+merge/112188

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/6331066/

Affected files:
   A [revision details]
   M juju/lib/zk.py
   M juju/tests/common.py

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: <email address hidden>
+New revision: <email address hidden>

Index: juju/lib/zk.py
=== modified file 'juju/lib/zk.py'
--- juju/lib/zk.py 2011-09-22 19:32:36 +0000
+++ juju/lib/zk.py 2012-06-26 16:36:32 +0000
@@ -51,7 +51,7 @@

      def __init__(self, run_dir, port=None, host=None,
                   zk_location="system", user=None, group=None,
- use_deferred=True):
+ use_deferred=True, fsync=True):
          """
          :param run_dir: Directory to store all zookeeper instance related
data.
          :param port: The port zookeeper should run on.
@@ -73,6 +73,7 @@
          self._group = group
          self._zk_location = zk_location
          self._use_deferred = use_deferred
+ self.fsync = fsync

      def start(self):
          assert self._port is not None
@@ -197,8 +198,10 @@
              config.write(log4j_properties)

          with open(zk_vars["config_path"], "w") as config:
- config.write(
- zookeeper_conf_template % (zk_vars["data_dir"],
self._port))
+ conf = zookeeper_conf_template % (zk_vars["data_dir"],
self._port)
+ if self.fsync:
+ conf += "\nfsync=no\n"
+ config.write(conf)
              if self._host:
                  config.write("\nclientPortAddress=%s" % self._host)

Index: juju/tests/common.py
=== modified file 'juju/tests/common.py'
--- juju/tests/common.py 2011-09-16 00:36:31 +0000
+++ juju/tests/common.py 2012-06-26 16:36:32 +0000
@@ -23,7 +23,7 @@

  @contextmanager
-def zookeeper_test_context(install_path, port=28181):
+def zookeeper_test_context(install_path, port=28181, fsync=False):
      """Manage context to run/stop a ZooKeeper for testing and related vars.

      @param install_path: The path to the install for ZK. Bare word "system"
@@ -36,7 +36,8 @@
      saved_env = os.environ.get("ZOOKEEPER_ADDRESS")
      test_zookeeper = Zookeeper(
          tempfile.mkdtemp(), port,
- zk_location=install_path, use_deferred=False)
+ zk_location=install_path, use_deferred=False,
+ fsync=fsync)

      test_zookeeper.start()
      os.environ["ZOOKEEPER_ADDRESS"] = test_zookeeper.address

Revision history for this message
Benjamin Saller (bcsaller) wrote :

LGTM +1 and a good idea too

review: Approve
Revision history for this message
Clint Byrum (clint-fewbar) wrote :

Tested, works great. Thanks Kapil!

review: Approve
Revision history for this message
Kapil Thangavelu (hazmat) wrote :

*** Submitted:

disable fsync on zk to speed tests.

[r=bcsaller,clint-fewbar]

The tests exercise zk heavily, and by defaults its configured
for per operation fsync to disk, disabling the fsync greatly
speeds up full test runs.

R=
CC=
https://codereview.appspot.com/6331066

https://codereview.appspot.com/6331066/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'juju/lib/zk.py'
--- juju/lib/zk.py 2011-09-22 19:32:36 +0000
+++ juju/lib/zk.py 2012-06-26 18:45:49 +0000
@@ -51,7 +51,7 @@
5151
52 def __init__(self, run_dir, port=None, host=None,52 def __init__(self, run_dir, port=None, host=None,
53 zk_location="system", user=None, group=None,53 zk_location="system", user=None, group=None,
54 use_deferred=True):54 use_deferred=True, fsync=True):
55 """55 """
56 :param run_dir: Directory to store all zookeeper instance related data.56 :param run_dir: Directory to store all zookeeper instance related data.
57 :param port: The port zookeeper should run on.57 :param port: The port zookeeper should run on.
@@ -73,6 +73,7 @@
73 self._group = group73 self._group = group
74 self._zk_location = zk_location74 self._zk_location = zk_location
75 self._use_deferred = use_deferred75 self._use_deferred = use_deferred
76 self.fsync = fsync
7677
77 def start(self):78 def start(self):
78 assert self._port is not None79 assert self._port is not None
@@ -197,8 +198,10 @@
197 config.write(log4j_properties)198 config.write(log4j_properties)
198199
199 with open(zk_vars["config_path"], "w") as config:200 with open(zk_vars["config_path"], "w") as config:
200 config.write(201 conf = zookeeper_conf_template % (zk_vars["data_dir"], self._port)
201 zookeeper_conf_template % (zk_vars["data_dir"], self._port))202 if self.fsync:
203 conf += "\nfsync=no\n"
204 config.write(conf)
202 if self._host:205 if self._host:
203 config.write("\nclientPortAddress=%s" % self._host)206 config.write("\nclientPortAddress=%s" % self._host)
204207
205208
=== modified file 'juju/tests/common.py'
--- juju/tests/common.py 2011-09-16 00:36:31 +0000
+++ juju/tests/common.py 2012-06-26 18:45:49 +0000
@@ -23,7 +23,7 @@
2323
2424
25@contextmanager25@contextmanager
26def zookeeper_test_context(install_path, port=28181):26def zookeeper_test_context(install_path, port=28181, fsync=False):
27 """Manage context to run/stop a ZooKeeper for testing and related vars.27 """Manage context to run/stop a ZooKeeper for testing and related vars.
2828
29 @param install_path: The path to the install for ZK. Bare word "system"29 @param install_path: The path to the install for ZK. Bare word "system"
@@ -36,7 +36,8 @@
36 saved_env = os.environ.get("ZOOKEEPER_ADDRESS")36 saved_env = os.environ.get("ZOOKEEPER_ADDRESS")
37 test_zookeeper = Zookeeper(37 test_zookeeper = Zookeeper(
38 tempfile.mkdtemp(), port,38 tempfile.mkdtemp(), port,
39 zk_location=install_path, use_deferred=False)39 zk_location=install_path, use_deferred=False,
40 fsync=fsync)
4041
41 test_zookeeper.start()42 test_zookeeper.start()
42 os.environ["ZOOKEEPER_ADDRESS"] = test_zookeeper.address43 os.environ["ZOOKEEPER_ADDRESS"] = test_zookeeper.address

Subscribers

People subscribed via source and target branches

to status/vote changes: