Skip to content

Commit

Permalink
Merge branch 'release/0.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
luiscoms committed May 22, 2017
2 parents 1b9b0b3 + 897d61b commit 741d015
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.1.0
current_version = 0.2.0

[bumpversion:file:setup.py]

Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
@@ -1,6 +1,11 @@
eve-healthckeck
===========

0.2.0
-----

* Fix #1 - Support for URL_PREFIX and API_VERSION config

0.1.0
-----

Expand Down
40 changes: 29 additions & 11 deletions README.rst
@@ -1,8 +1,8 @@
eve-healthcheck
eve-healthcheck |Latest Version|
===============

|Build Status| |Requirements Status| |Coverage Status|

`eve-healthcheck`_ is project that servers healthcheck urls used to
monitor your application `Eve`_ powered RESTful API.

Expand All @@ -23,14 +23,27 @@ connection like:

.. code:: json
{'hostname': 'localhost',
'results': [{'checker': 'database_check',
'expires': 1487655119.5796409,
'output': 'Database OK',
'passed': True,
'timestamp': 1487655092.5796409}],
'status': 'success',
'timestamp': 1487655092.5820687}
{
"hostname":"localhost",
"results":[
{
"checker":"database_check",
"expires":1487655119.5796409,
"output":"Database OK",
"passed":true,
"timestamp":1487655092.5796409
}
],
"status":"success",
"timestamp":1487655092.5820687
}
Installation
------------

::

$ pip install eve-healthcheck

Running tests with ``tox``
--------------------------
Expand All @@ -50,9 +63,14 @@ Run tests
.. _eve-healthcheck: https://pypi.python.org/pypi/eve-healthcheck
.. _Eve: http://python-eve.org/


.. |Latest Version| image:: https://badge.fury.io/py/eve-healthcheck.svg
:target: https://badge.fury.io/py/eve-healthcheck

.. |Build Status| image:: https://travis-ci.org/ateliedocodigo/eve-healthcheck.svg?branch=master
:target: https://travis-ci.org/ateliedocodigo/eve-healthcheck
.. |Requirements Status| image:: https://requires.io/github/ateliedocodigo/eve-healthcheck/requirements.svg?branch=master
:target: https://requires.io/github/ateliedocodigo/eve-healthcheck/requirements/?branch=master
.. |Coverage Status| image:: https://coveralls.io/repos/github/ateliedocodigo/eve-healthcheck/badge.svg?branch=master
:target: https://coveralls.io/github/ateliedocodigo/eve-healthcheck?branch=master
:target: https://coveralls.io/github/ateliedocodigo/eve-healthcheck?branch=master

15 changes: 7 additions & 8 deletions eve_healthcheck/__init__.py
@@ -1,13 +1,11 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import logging

from healthcheck import HealthCheck

import logging


class EveHealthCheck(object):

def __init__(self, app=None, healthcheck_uri='/healthcheck', *argv, **kw):
self.logger = logging.getLogger(self.__module__)
self.hc = HealthCheck(*argv, **kw)
Expand All @@ -25,9 +23,10 @@ def database_check():
return True, "Database OK"

self.hc.add_check(database_check)
app.add_url_rule(healthcheck_uri, healthcheck_uri, view_func=lambda: self.hc.run())

uri = "{}{}".format(app.api_prefix, healthcheck_uri)
app.add_url_rule(uri, uri, view_func=lambda: self.hc.run(), methods=['GET', 'OPTIONS'])
for k, v in app.config.get('DOMAIN', {}).items():
self.logger.debug("Adding uri /{}{}".format(k, healthcheck_uri))
app.add_url_rule("/{}{}".format(k, healthcheck_uri),
"/{}{}".format(k, healthcheck_uri),
view_func=lambda: self.hc.run())
uri = "{}/{}{}".format(app.api_prefix, k, healthcheck_uri)
self.logger.debug("Adding uri {}".format(uri))
app.add_url_rule(uri, uri, view_func=lambda: self.hc.run(), methods=['GET', 'OPTIONS'])
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -3,7 +3,7 @@
from os.path import abspath, dirname, join
import setuptools

__version__ = "0.1.0"
__version__ = "0.2.0"
__project_name__ = "eve-healthcheck"
__repo__ = "https://github.com/ateliedocodigo/eve-healthcheck"

Expand Down
69 changes: 68 additions & 1 deletion tests/test_healthckeck.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest

from eve_healthcheck import EveHealthCheck

from tests import TestBase

Expand Down Expand Up @@ -49,3 +50,69 @@ def test_database_failure_check(self):
self.assertEqual(500, r.status_code)
jr = self.parse_response(r)
self.assertEqual("failure", jr["status"])

def test_url_prefix_success_check(self):
url_prefix = 'prefix'
# set an invalid database
self.app.config['URL_PREFIX'] = url_prefix

# Recreate the healthcheck object in order to get utl prefix
self.hc = EveHealthCheck(self.app, self.healthcheck_uri)

# ckeck eatch domain
for k, v in self.app.config.get('DOMAIN', {}).items():
r = self.test_client.get("/{}/{}{}".format(url_prefix, k, self.healthcheck_uri))

self.assertEqual(200, r.status_code)
jr = self.parse_response(r)
self.assertEqual("success", jr["status"])

def test_url_prefix_failure_check(self):
url_prefix = 'prefix'
# set an invalid database
self.app.config['MONGO_URI'] = 'mongodb://invalid.db.net/db'
self.app.config['URL_PREFIX'] = url_prefix

# Recreate the healthcheck object in order to get utl prefix
self.hc = EveHealthCheck(self.app, self.healthcheck_uri)

# ckeck eatch domain
for k, v in self.app.config.get('DOMAIN', {}).items():
r = self.test_client.get("/{}/{}{}".format(url_prefix, k, self.healthcheck_uri))

self.assertEqual(500, r.status_code)
jr = self.parse_response(r)
self.assertEqual("failure", jr["status"])

def test_url_api_version_success_check(self):
api_version = '1.0.0'
# set an invalid database
self.app.config['API_VERSION'] = api_version

# Recreate the healthcheck object in order to get utl prefix
self.hc = EveHealthCheck(self.app, self.healthcheck_uri)

# ckeck eatch domain
for k, v in self.app.config.get('DOMAIN', {}).items():
r = self.test_client.get("/{}/{}{}".format(api_version, k, self.healthcheck_uri))

self.assertEqual(200, r.status_code)
jr = self.parse_response(r)
self.assertEqual("success", jr["status"])

def test_url_api_version_failure_check(self):
api_version = '1.0.0'
# set an invalid database
self.app.config['MONGO_URI'] = 'mongodb://invalid.db.net/db'
self.app.config['API_VERSION'] = api_version

# Recreate the healthcheck object in order to get utl prefix
self.hc = EveHealthCheck(self.app, self.healthcheck_uri)

# ckeck eatch domain
for k, v in self.app.config.get('DOMAIN', {}).items():
r = self.test_client.get("/{}/{}{}".format(api_version, k, self.healthcheck_uri))

self.assertEqual(500, r.status_code)
jr = self.parse_response(r)
self.assertEqual("failure", jr["status"])
4 changes: 2 additions & 2 deletions tests/test_settings.py
Expand Up @@ -3,8 +3,8 @@

MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_USERNAME = 'test_user'
MONGO_PASSWORD = 'test_pw'
MONGO_USERNAME = '' # 'test_user'
MONGO_PASSWORD = '' # 'test_pw'
MONGO_DBNAME = 'eve_healthcheck_test'

TRANSPARENT_SCHEMA_RULES = True
Expand Down

0 comments on commit 741d015

Please sign in to comment.