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
1=== modified file 'juju/lib/zk.py'
2--- juju/lib/zk.py 2011-09-22 19:32:36 +0000
3+++ juju/lib/zk.py 2012-06-26 18:45:49 +0000
4@@ -51,7 +51,7 @@
5
6 def __init__(self, run_dir, port=None, host=None,
7 zk_location="system", user=None, group=None,
8- use_deferred=True):
9+ use_deferred=True, fsync=True):
10 """
11 :param run_dir: Directory to store all zookeeper instance related data.
12 :param port: The port zookeeper should run on.
13@@ -73,6 +73,7 @@
14 self._group = group
15 self._zk_location = zk_location
16 self._use_deferred = use_deferred
17+ self.fsync = fsync
18
19 def start(self):
20 assert self._port is not None
21@@ -197,8 +198,10 @@
22 config.write(log4j_properties)
23
24 with open(zk_vars["config_path"], "w") as config:
25- config.write(
26- zookeeper_conf_template % (zk_vars["data_dir"], self._port))
27+ conf = zookeeper_conf_template % (zk_vars["data_dir"], self._port)
28+ if self.fsync:
29+ conf += "\nfsync=no\n"
30+ config.write(conf)
31 if self._host:
32 config.write("\nclientPortAddress=%s" % self._host)
33
34
35=== modified file 'juju/tests/common.py'
36--- juju/tests/common.py 2011-09-16 00:36:31 +0000
37+++ juju/tests/common.py 2012-06-26 18:45:49 +0000
38@@ -23,7 +23,7 @@
39
40
41 @contextmanager
42-def zookeeper_test_context(install_path, port=28181):
43+def zookeeper_test_context(install_path, port=28181, fsync=False):
44 """Manage context to run/stop a ZooKeeper for testing and related vars.
45
46 @param install_path: The path to the install for ZK. Bare word "system"
47@@ -36,7 +36,8 @@
48 saved_env = os.environ.get("ZOOKEEPER_ADDRESS")
49 test_zookeeper = Zookeeper(
50 tempfile.mkdtemp(), port,
51- zk_location=install_path, use_deferred=False)
52+ zk_location=install_path, use_deferred=False,
53+ fsync=fsync)
54
55 test_zookeeper.start()
56 os.environ["ZOOKEEPER_ADDRESS"] = test_zookeeper.address

Subscribers

People subscribed via source and target branches

to status/vote changes: