Skip to content

Query Server package code review #286

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 66 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
b9ac81b
[server] Introduce query server package
kxepal Mar 22, 2016
e38397e
[server] Introduce `BaseQueryServer` and `SimpleQueryServer`
kxepal May 13, 2016
3a71bff
[server] mv view.py to server/__main__.py
kxepal May 9, 2016
820bda5
[server] Add server test suite
kxepal May 14, 2016
55d7088
[server] Test suite for `server.stream`
kxepal May 14, 2016
dcbbd47
[server] Apply proper API calls to __main__.py
kxepal May 9, 2016
b47a059
[server] New cmd option `--log-level`
kxepal May 9, 2016
76256a1
[server] New cmd option `--allow-get-update`
kxepal May 9, 2016
ce1a300
[server] New cmd option `--enable-eggs`
kxepal May 9, 2016
e217c4f
[server] New cmd option `--egg-cache`
kxepal May 9, 2016
12893f6
[server] New cmd option `couchdb-version`
kxepal May 9, 2016
146d969
[server] `BaseQueryServer.commands` property
kxepal May 13, 2016
147364e
[server] Exception handlers for `BaseQueryServer`
kxepal May 13, 2016
369f320
[server] Property `BaseQueryServer.state`
kxepal May 13, 2016
bd98047
[server] Server cmd: `log`
kxepal May 13, 2016
a0fbacd
[server] Server API: `compile`
kxepal May 13, 2016
2f562a7
[server] Resolve dependencies of `compiler`: `maybe_export_egg`
kxepal May 15, 2016
3bad349
[server] Resolve dependencies of `compiler`
kxepal May 15, 2016
45682c5
[server] Resolve dependencies of `compiler`: `require`
kxepal May 15, 2016
906c6b1
[server] Resolve dependencies of `compiler`: `compile_func`
kxepal May 15, 2016
37798ba
[server] Server cmd: `add_lib`
kxepal May 13, 2016
4349d51
[server] Server cmd: `add_fun`
kxepal May 13, 2016
9c30606
[server] Server cmd: `reset`
kxepal May 13, 2016
c4e152b
[server] Server cmd: `add_ddoc`
kxepal May 13, 2016
d4f7a01
[server] Server API: `ddoc_cmd`
kxepal May 13, 2016
698ee0e
[server] Server cmd: `map_doc`
kxepal May 13, 2016
d00497d
[server] Server cmd: `reduce`
kxepal May 13, 2016
bb91838
[server] Server cmd: `rereduce`
kxepal May 13, 2016
a2c5841
[server] Server cmd: `show_doc`
kxepal May 13, 2016
0a457bf
[server] `render_function` required by `show_doc`
kxepal May 13, 2016
cca018d
[server] `response_with` required by `show_doc`
kxepal May 13, 2016
dbcc74d
[server] Introduce `MimeProvider`
kxepal May 13, 2016
b321342
[server] Add `util.OrderedDict` required by `mime`
iblislin May 14, 2016
1db4916
[server] Add helper functions in module `mime`
kxepal May 14, 2016
91abfb9
[server] Server cmd: `list_old`
kxepal May 14, 2016
3f47ac1
[server] Server cmd: `show`
kxepal May 14, 2016
9e9422c
[server] Server cmd: `list`
kxepal May 14, 2016
2148e00
[server] Server cmd: `update`
kxepal May 14, 2016
ef9c855
[server] Server cmd: `filter`
kxepal May 14, 2016
6cede86
[server] Server cmd: `validate_doc_update`
kxepal May 14, 2016
6f365b8
[server] Server cmd: `ddoc shows`
kxepal May 14, 2016
8e7b197
[server] Server cmd: `ddoc lists`
kxepal May 14, 2016
64c7d14
[server] Server cmd: `ddoc updates`
kxepal May 14, 2016
106e528
[server] Server cmd: `ddoc filters`
kxepal May 14, 2016
e60cf48
[server] Server cmd: `ddoc views`
kxepal May 14, 2016
27facf4
[server] Server cmd: `ddoc validate_doc_update`
kxepal May 14, 2016
60b8555
[server] Add test suite: 'cli'
kxepal May 15, 2016
e741a85
[server] unicode anywhere in stream.respond
iblislin May 20, 2016
cc4798e
[server] Fix setup.py packages options
iblislin May 20, 2016
8bd1985
[server] update docstring of __main__ script
iblislin May 20, 2016
439af0a
[server] move local import statement to the top
iblislin May 20, 2016
39131fd
[server] Fix option string of cli script
iblislin May 20, 2016
838c861
[server] Replace try-except block with assertRaises
iblislin May 20, 2016
2b84a3a
[server] Apply `None` checking for `qs.log` properly
iblislin May 21, 2016
c1b50cd
[server] fix typo in compiler.py
iblislin May 22, 2016
71db52b
[server] clean up legacy code in compiler.py
iblislin May 23, 2016
2b8d345
[server] clean up legacy test case in compiler.py
iblislin May 23, 2016
0b99d7b
[server] Reimplement compiler.maybe_b64egg
iblislin May 24, 2016
b0cc416
[server] Accept empty context in compiler.require
iblislin May 28, 2016
f0c5054
[server] code clean up in compiler.py
iblislin May 28, 2016
f373e06
[server] check side effect in test case
iblislin May 30, 2016
a2ff50d
[server] Remove obsolete var: state.line_length
iblislin Jun 6, 2016
f7aee62
[server] Exam the output of user map funcion
iblislin Jun 11, 2016
f91a237
[server] check the empty output of map_doc in test case
iblislin Jun 23, 2016
13f6c8d
[server] raise exceptions in try-else block for views.py
iblislin Oct 25, 2016
d099408
[server] mime: update DEFAULT_TYPES
iblislin Oct 26, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[server] Apply None checking for qs.log properly
We also take care the new log format.

Reference: #268
See Also:  #276
  • Loading branch information
iblislin committed May 21, 2016
commit 2b84a3a8122faaa2d5d0cad9528f0ac32d78b6eb
11 changes: 5 additions & 6 deletions couchdb/server/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,15 +241,14 @@ def log(self, message):
Log message format has changed from ``{"log": message}`` to
``["log", message]``
"""
if message is None:
message = 'Error: attempting to log message of None'
if not isinstance(message, util.strbase):
message = json.encode(message)

if self.version < (0, 11, 0):
if message is None:
message = 'Error: attempting to log message of None'
if not isinstance(message, util.strbase):
message = json.encode(message)
res = {'log': message}
else:
if not isinstance(message, util.strbase):
message = json.encode(message)
res = ['log', message]
self.respond(res)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess this will be better.

diff --git a/couchdb/server/__init__.py b/couchdb/server/__init__.py
index 1a64835..40a4328 100644
--- a/couchdb/server/__init__.py
+++ b/couchdb/server/__init__.py
@@ -241,15 +241,14 @@ class BaseQueryServer(object):
             Log message format has changed from ``{"log": message}`` to
             ``["log", message]``
         """
+        if message is None:
+            message = 'Error: attempting to log message of None'
+        if not isinstance(message, util.strbase):
+            message = json.encode(message)
+
         if self.version < (0, 11, 0):
-            if message is None:
-                message = 'Error: attempting to log message of None'
-            if not isinstance(message, util.strbase):
-                message = json.encode(message)
             res = {'log': message}
         else:
-            if not isinstance(message, util.strbase):
-                message = json.encode(message)
             res = ['log', message]
         self.respond(res)

diff --git a/couchdb/tests/server/qs.py b/couchdb/tests/server/qs.py
index 8513a2d..3354263 100644
--- a/couchdb/tests/server/qs.py
+++ b/couchdb/tests/server/qs.py
@@ -237,11 +237,11 @@ class BaseQueryServerTestCase(unittest.TestCase):

     def test_log_none_message(self):
         output = StringIO()
-        server = BaseQueryServer(version=(0, 9, 0), output=output)
+        server = BaseQueryServer(output=output)
         server.log(None)
         self.assertEqual(
             output.getvalue(),
-            u'{"log": "Error: attempting to log message of None"}\n'
+            u'["log", "Error: attempting to log message of None"]\n'
         )

     def test_log_newstyle(self):

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thought I would keep test for old style logging.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. I can keep test for old one and add another testing code for new style.

Copy link
Author

@iblislin iblislin May 20, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patch V2

diff --git a/couchdb/server/__init__.py b/couchdb/server/__init__.py
index 1a64835..40a4328 100644
--- a/couchdb/server/__init__.py
+++ b/couchdb/server/__init__.py
@@ -241,15 +241,14 @@ class BaseQueryServer(object):
             Log message format has changed from ``{"log": message}`` to
             ``["log", message]``
         """
+        if message is None:
+            message = 'Error: attempting to log message of None'
+        if not isinstance(message, util.strbase):
+            message = json.encode(message)
+
         if self.version < (0, 11, 0):
-            if message is None:
-                message = 'Error: attempting to log message of None'
-            if not isinstance(message, util.strbase):
-                message = json.encode(message)
             res = {'log': message}
         else:
-            if not isinstance(message, util.strbase):
-                message = json.encode(message)
             res = ['log', message]
         self.respond(res)

diff --git a/couchdb/tests/server/qs.py b/couchdb/tests/server/qs.py
index 8513a2d..9937fe4 100644
--- a/couchdb/tests/server/qs.py
+++ b/couchdb/tests/server/qs.py
@@ -235,7 +235,7 @@ class BaseQueryServerTestCase(unittest.TestCase):
             u'{"log": "[\\"foo\\", {\\"bar\\": \\"baz\\"}, 42]"}\n'
         )

-    def test_log_none_message(self):
+    def test_log_none_message_oldstyle(self):
         output = StringIO()
         server = BaseQueryServer(version=(0, 9, 0), output=output)
         server.log(None)
@@ -244,6 +244,15 @@ class BaseQueryServerTestCase(unittest.TestCase):
             u'{"log": "Error: attempting to log message of None"}\n'
         )

+    def test_log_none_message_newstyle(self):
+        output = StringIO()
+        server = BaseQueryServer(output=output)
+        server.log(None)
+        self.assertEqual(
+            output.getvalue(),
+            u'["log", "Error: attempting to log message of None"]\n'
+        )
+
     def test_log_newstyle(self):
         output = StringIO()
         server = BaseQueryServer(version=(0, 11, 0), output=output)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patched @ 2b84a3a


Expand Down
11 changes: 10 additions & 1 deletion couchdb/tests/server/qs.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ def test_log_oldstyle(self):
u'{"log": "[\\"foo\\", {\\"bar\\": \\"baz\\"}, 42]"}\n'
)

def test_log_none_message(self):
def test_log_none_message_oldstyle(self):
output = StringIO()
server = BaseQueryServer(version=(0, 9, 0), output=output)
server.log(None)
Expand All @@ -244,6 +244,15 @@ def test_log_none_message(self):
u'{"log": "Error: attempting to log message of None"}\n'
)

def test_log_none_message_newstyle(self):
output = StringIO()
server = BaseQueryServer(output=output)
server.log(None)
self.assertEqual(
output.getvalue(),
u'["log", "Error: attempting to log message of None"]\n'
)

def test_log_newstyle(self):
output = StringIO()
server = BaseQueryServer(version=(0, 11, 0), output=output)
Expand Down