public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoostats:master commit in: server/, server/tests/
@ 2011-06-29 15:14 Vikraman Choudhury
  0 siblings, 0 replies; 2+ messages in thread
From: Vikraman Choudhury @ 2011-06-29 15:14 UTC (permalink / raw
  To: gentoo-commits

commit:     bef09ea969572c33cba0127a22a23ecd92f80926
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Wed Jun 29 15:14:26 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Wed Jun 29 15:14:26 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=bef09ea9

tests for server

---
 server/runtests.py         |   13 +++++++
 server/tests/__init__.py   |    1 +
 server/tests/test_host.py  |   81 ++++++++++++++++++++++++++++++++++++++++++++
 server/tests/test_index.py |   26 ++++++++++++++
 4 files changed, 121 insertions(+), 0 deletions(-)

diff --git a/server/runtests.py b/server/runtests.py
new file mode 100755
index 0000000..8c0cbb0
--- /dev/null
+++ b/server/runtests.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import unittest
+
+from tests.test_index import TestIndex
+from tests.test_host import TestHost
+
+testCases = [TestIndex, TestHost]
+
+if __name__ == '__main__':
+  suites = [ unittest.TestLoader().loadTestsFromTestCase(testCase) for testCase in testCases]
+  for suite in suites:
+	unittest.TextTestRunner(verbosity=2).run(suite)

diff --git a/server/tests/__init__.py b/server/tests/__init__.py
new file mode 100644
index 0000000..3c6cfa2
--- /dev/null
+++ b/server/tests/__init__.py
@@ -0,0 +1 @@
+# Make this a python package

diff --git a/server/tests/test_host.py b/server/tests/test_host.py
new file mode 100644
index 0000000..b5b6ebe
--- /dev/null
+++ b/server/tests/test_host.py
@@ -0,0 +1,81 @@
+
+import uuid
+import json
+import unittest
+from main import app
+
+class TestHost(unittest.TestCase):
+
+  def setUp(self):
+	self.b = app.browser()
+
+  def test_basic(self):
+	self.b.open('/host')
+	self.assertEqual(self.b.path, '/host')
+	self.assertEqual(self.b.status, 404)
+  
+  def test_get(self):
+	uri = '/host/' + str(uuid.uuid4())
+	self.b.open(uri)
+	self.assertEqual(self.b.path, uri)
+
+	# This has a probability of failing of
+	# 1 - exp(-((n+1)**2)/2**123)
+	# where n is the no. of uuids already in the db
+	self.assertEqual(self.b.status, 404)
+
+  def test_post_empty(self):
+	str_uuid = str(uuid.uuid4())
+	uri = '/host/' + str_uuid
+	# post with empty string
+	self.b.open(uri, '')
+	self.assertEqual(self.b.path, uri)
+	self.assertEqual(self.b.status, 500)
+	# post with empty json string
+	data = json.JSONEncoder().encode('')
+	self.b.open(uri, data)
+	self.assertEqual(self.b.path, uri)
+	self.assertEqual(self.b.status, 500)
+	# post with empty payload
+	payload = {
+		'AUTH':{'UUID':str_uuid,'PASSWD':'test'},
+		'PROTOCOL':1
+		}
+	data = json.JSONEncoder().encode(payload)
+	self.b.open(uri, data)
+	self.assertEqual(self.b.path, uri)
+	self.assertEqual(self.b.status, 500)
+  
+  def test_post_bad(self):
+	str_uuid = str(uuid.uuid4())
+	uri = '/host/' + str_uuid
+	# different uuid in payload
+	payload = {
+		'AUTH':{'UUID':str(uuid.uuid4()),'PASSWD':'test'},
+		'PROTOCOL':1
+		}
+	data = json.JSONEncoder().encode(payload)
+	self.b.open(uri,data)
+	self.assertEqual(self.b.path, uri)
+	self.assertEqual(self.b.status, 200)
+	self.assertTrue('Invalid uuid' in self.b.data)
+
+  def test_post_get(self):
+	str_uuid = str(uuid.uuid4())
+	uri = '/host/' + str_uuid
+	payload = {
+		'AUTH':{'UUID':str_uuid,'PASSWD':'test'},
+		'PROTOCOL':1
+		}
+	for var in ['PLATFORM','PROFILE','LASTSYNC']:
+	  payload[var] = 'Unknown'
+	for var in ['ARCH','CHOST','CFLAGS','CXXFLAGS','FFLAGS','LDFLAGS','MAKEOPTS','SYNC']:
+	  payload[var] = None
+	for var in ['ACCEPT_KEYWORDS','LANG','GENTOO_MIRRORS','FEATURES','USE']:
+	  payload[var] = []
+	payload['PACKAGES'] = {}
+	data = json.JSONEncoder().encode(payload)
+	self.b.open(uri,data)
+	self.assertEqual(self.b.path, uri)
+	self.assertEqual(self.b.status, 200)
+	self.assertTrue('POST for ' + str_uuid + ' successful' in self.b.data)

diff --git a/server/tests/test_index.py b/server/tests/test_index.py
new file mode 100644
index 0000000..63614ab
--- /dev/null
+++ b/server/tests/test_index.py
@@ -0,0 +1,26 @@
+
+import unittest
+from main import app
+
+class TestIndex(unittest.TestCase):
+
+  def setUp(self):
+	self.b = app.browser()
+	self.b.open('/')
+
+  def test_basic(self):
+	self.assertEqual(self.b.path, '/')
+	self.assertEqual(self.b.status, 200)
+
+  def test_content(self):
+	self.assertTrue('Welcome to the gentoostats webapp' in self.b.data)
+
+  def test_hosts(self):
+	self.assertTrue('Number of hosts' in self.b.data)
+	lines = self.b.data.split('\n')
+	for line in lines:
+	  if line.startswith('Number of hosts'):
+		words = line.split()
+		count = int(words[-1].strip('</br>'))
+		self.assertGreaterEqual(count,0)
+		break



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: server/, server/tests/
@ 2011-08-21 14:42 Vikraman Choudhury
  0 siblings, 0 replies; 2+ messages in thread
From: Vikraman Choudhury @ 2011-08-21 14:42 UTC (permalink / raw
  To: gentoo-commits

commit:     858ed9350a3115195509d0fbc1cf11a5b9a80750
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Sun Aug 21 14:41:37 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Sun Aug 21 14:41:37 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=858ed935

commented server code

---
 server/__init__.py         |    1 +
 server/about.py            |    3 ++
 server/arch.py             |    1 +
 server/config.py           |    6 +++++
 server/dbconfig.py         |    6 +++++
 server/feature.py          |    3 +-
 server/helpers.py          |   49 +++++++++++++++++++++++++++++++++++---------
 server/host.py             |   25 +++++++++++++++++-----
 server/index.py            |    1 +
 server/kwd.py              |    7 +++++-
 server/lang.py             |    3 +-
 server/mirror.py           |    3 +-
 server/package.py          |   12 ++++++++++
 server/repo.py             |    4 ++-
 server/search.py           |    9 ++++++++
 server/tests/test_host.py  |   18 ++++++++++++++++
 server/tests/test_index.py |   12 ++++++++++
 17 files changed, 142 insertions(+), 21 deletions(-)

diff --git a/server/__init__.py b/server/__init__.py
index e69de29..3c6cfa2 100644
--- a/server/__init__.py
+++ b/server/__init__.py
@@ -0,0 +1 @@
+# Make this a python package

diff --git a/server/about.py b/server/about.py
index c808341..62eb30c 100644
--- a/server/about.py
+++ b/server/about.py
@@ -4,4 +4,7 @@ import web
 class About(object):
 
     def GET(self):
+        """
+        Redirect to static about page
+        """
         raise web.seeother('/static/about.html')

diff --git a/server/arch.py b/server/arch.py
index 814c7c4..b6ddc9f 100644
--- a/server/arch.py
+++ b/server/arch.py
@@ -11,6 +11,7 @@ class Arch(object):
         if helpers.is_json_request():
             return helpers.serialize(arch_data)
         else:
+            # generate plot
             x_ticklabels = arch_data.keys()
             y_values = [ arch_data[a]['HOSTS'] for a in x_ticklabels ]
             arch_plot = helpers.barchart(title = 'Hosts per arch', x_label = 'Arch',

diff --git a/server/config.py b/server/config.py
index 98326ae..cca5c0e 100644
--- a/server/config.py
+++ b/server/config.py
@@ -17,7 +17,13 @@ db = web.database(
 render = web.template.render(rootdir + 'templates/', base='layout')
 
 def notfound():
+    """
+    Rendered for HTTP 404 errors
+    """
     return web.notfound(render.error_404())
 
 def internalerror():
+    """
+    Rendered for HTTP 500 errors
+    """
     return web.internalerror(render.error_500())

diff --git a/server/dbconfig.py b/server/dbconfig.py
index e5eb42c..f0a8418 100644
--- a/server/dbconfig.py
+++ b/server/dbconfig.py
@@ -5,12 +5,18 @@ import ConfigParser
 class DBConfig(object):
 
     def __init__(self, configfile):
+        """
+        Initialie db config from configfile
+        """
         self.config = ConfigParser.ConfigParser()
         if len(self.config.read(configfile)) == 0:
             sys.stderr.write('Cannot read ' + configfile)
             sys.exit(1)
 
     def get_config(self):
+        """
+        Return db config as dict
+        """
         ret = dict()
         try:
             ret['DB'] = self.config.get('MYSQL', 'DB')

diff --git a/server/feature.py b/server/feature.py
index 1ea1c36..68e8657 100644
--- a/server/feature.py
+++ b/server/feature.py
@@ -4,7 +4,8 @@ from config import render, db
 
 class Feature(object):
     def GET(self):
-        feature_count = db.query('SELECT FEATURE,COUNT(UUID) AS HOSTS FROM HOST_FEATURES NATURAL JOIN FEATURES GROUP BY FEATURE')
+        feature_count = db.query('SELECT FEATURE,COUNT(UUID) AS HOSTS\
+                FROM HOST_FEATURES NATURAL JOIN FEATURES GROUP BY FEATURE')
         feature_data = dict()
         for t in feature_count:
             feature_data[t['FEATURE']] = {'HOSTS':t['HOSTS']}

diff --git a/server/helpers.py b/server/helpers.py
index 5b81cb3..6e12ae1 100644
--- a/server/helpers.py
+++ b/server/helpers.py
@@ -13,22 +13,24 @@ os.environ['HOME'] = '/tmp'
 from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
 from matplotlib.figure import Figure
 
-# check valid uuid
-
 def is_uuid(uuid):
+    """
+    Check uuid validity
+    """
     regex = re.compile(r'^(\w{8})-(\w{4})-(\w{4})-(\w{4})-(\w{12})$')
     return regex.search(uuid)
 
-# convert uuid string to raw bytes
-
 def uuidbin(string):
-    #TODO: string is not a valid uuid
+    """
+    Convert uuid string to raw bytes
+    """
     u = uuid.UUID(string)
     return u.bytes
 
-# custom pkgsplit
-
 def pkgsplit(pkgname):
+    """
+    Custom pkgsplit
+    """
     cpv={'cat':'','pkg':'','ver':''}
     cpvr = catpkgsplit(pkgname)
     if cpvr is None:
@@ -43,10 +45,10 @@ def pkgsplit(pkgname):
             cpv['ver'] = cpv['ver'] + '-' + cpvr[3]
     return cpv
 
-# get functions for index keys
-# lookup key and insert if not found
-
 def get_kwkey(db, keyword):
+    """
+    Lookup keyword and return index key. Insert keyword if not found.
+    """
     if keyword is None:
         return None
     db_keyword = db.select('KEYWORDS', vars={'keyword':keyword}, where='KEYWORD=$keyword')
@@ -57,6 +59,9 @@ def get_kwkey(db, keyword):
     return kwkey
 
 def get_lkey(db, lang):
+    """
+    Lookup lang and return index key. Insert lang if not found.
+    """
     if lang is None:
         return None
     db_lang = db.select('LANG', vars={'lang':lang}, where='LANG=$lang')
@@ -67,6 +72,9 @@ def get_lkey(db, lang):
     return lkey
 
 def get_fkey(db, feature):
+    """
+    Lookup feature and return index key. Insert feature if not found.
+    """
     if feature is None:
         return None
     db_feature = db.select('FEATURES', vars={'feature':feature}, where='FEATURE=$feature')
@@ -77,6 +85,9 @@ def get_fkey(db, feature):
     return fkey
 
 def get_mkey(db, mirror):
+    """
+    Lookup mirror and return index key. Insert mirror if not found.
+    """
     if mirror is None:
         return None
     db_mirror = db.select('GENTOO_MIRRORS', vars={'mirror':mirror}, where='MIRROR=$mirror')
@@ -87,6 +98,9 @@ def get_mkey(db, mirror):
     return mkey
 
 def get_ukey(db, useflag):
+    """
+    Lookup useflag and return index key. Insert useflag if not found.
+    """
     if useflag is None:
         return None
     db_useflag = db.select('USEFLAGS', vars={'useflag':useflag}, where='USEFLAG=$useflag')
@@ -97,6 +111,9 @@ def get_ukey(db, useflag):
     return ukey
 
 def get_pkey(db, package):
+    """
+    Lookup package and return index key. Insert package if not found.
+    """
     if package is None:
         return None
     cpv = pkgsplit(package)
@@ -108,6 +125,9 @@ def get_pkey(db, package):
     return pkey
 
 def get_rkey(db, repo):
+    """
+    Lookup repo and return index key. Insert repo if not found.
+    """
     if repo is None:
         return None
     db_repo = db.select('REPOSITORIES', vars={'repo':repo}, where='REPO=$repo')
@@ -118,9 +138,15 @@ def get_rkey(db, repo):
     return rkey
 
 def is_json_request():
+    """
+    Check for json headers
+    """
     return web.ctx.environ['HTTP_ACCEPT'].find('json') != -1
 
 def serialize(object, human=True):
+    """
+    Encode object in json
+    """
     if human:
         indent = 2
     else:
@@ -128,6 +154,9 @@ def serialize(object, human=True):
     return json.JSONEncoder(indent=indent).encode(object)
 
 def barchart(title, x_label, x_ticklabels, y_label, y_values):
+    """
+    Generate a barchart and return base64 encoded image data
+    """
     fig = Figure()
     canvas = FigureCanvas(fig)
     ind = range(len(y_values))

diff --git a/server/host.py b/server/host.py
index 7fd8132..c354939 100644
--- a/server/host.py
+++ b/server/host.py
@@ -6,6 +6,7 @@ import config
 from web import form
 from config import render, db
 
+# host search form
 host_form = form.Form(
         form.Textbox('uuid', description = 'UUID'),
         form.Button('submit', description = 'Submit')
@@ -36,32 +37,44 @@ class Host(object):
             host_data[var] = e[var]
 
         host_data['FEATURES'] = list()
-        features = db.query('SELECT FEATURE FROM HOST_FEATURES NATURAL JOIN FEATURES WHERE UUID=$uuid', vars={'uuid':uuid})
+        features = db.query('SELECT FEATURE\
+                FROM HOST_FEATURES NATURAL JOIN FEATURES\
+                WHERE UUID=$uuid', vars={'uuid':uuid})
         for f in features:
             host_data['FEATURES'].append(f['FEATURE'])
 
         host_data['ACCEPT_KEYWORDS'] = list()
-        keywords = db.query('SELECT KEYWORD FROM GLOBAL_KEYWORDS NATURAL JOIN KEYWORDS WHERE UUID=$uuid', vars={'uuid':uuid})
+        keywords = db.query('SELECT KEYWORD\
+                FROM GLOBAL_KEYWORDS NATURAL JOIN KEYWORDS\
+                WHERE UUID=$uuid', vars={'uuid':uuid})
         for k in keywords:
             host_data['ACCEPT_KEYWORDS'].append(k['KEYWORD'])
 
         host_data['USE'] = list()
-        useflags = db.query('SELECT USEFLAG FROM GLOBAL_USEFLAGS NATURAL JOIN USEFLAGS WHERE UUID=$uuid', vars={'uuid':uuid})
+        useflags = db.query('SELECT USEFLAG\
+                FROM GLOBAL_USEFLAGS NATURAL JOIN USEFLAGS\
+                WHERE UUID=$uuid', vars={'uuid':uuid})
         for u in useflags:
             host_data['USE'].append(u['USEFLAG'])
 
         host_data['LANG'] = list()
-        lang = db.query('SELECT LANG FROM HOST_LANG NATURAL JOIN LANG WHERE UUID=$uuid', vars={'uuid':uuid})
+        lang = db.query('SELECT LANG\
+                FROM HOST_LANG NATURAL JOIN LANG\
+                WHERE UUID=$uuid', vars={'uuid':uuid})
         for l in lang:
             host_data['LANG'].append(l['LANG'])
 
         host_data['GENTOO_MIRRORS'] = list()
-        mirrors = db.query('SELECT MIRROR FROM HOST_MIRRORS NATURAL JOIN GENTOO_MIRRORS WHERE UUID=$uuid', vars={'uuid':uuid})
+        mirrors = db.query('SELECT MIRROR\
+                FROM HOST_MIRRORS NATURAL JOIN GENTOO_MIRRORS\
+                WHERE UUID=$uuid', vars={'uuid':uuid})
         for m in mirrors:
             host_data['GENTOO_MIRRORS'].append(m['MIRROR'])
 
         host_data['PACKAGES'] = dict()
-        packages = db.query('SELECT CAT, PKG, VER FROM INSTALLED_PACKAGES NATURAL JOIN PACKAGES WHERE UUID=$uuid ORDER BY CAT, PKG, VER', vars={'uuid':uuid})
+        packages = db.query('SELECT CAT, PKG, VER\
+                FROM INSTALLED_PACKAGES NATURAL JOIN PACKAGES\
+                WHERE UUID=$uuid ORDER BY CAT, PKG, VER', vars={'uuid':uuid})
         for p in packages:
             cpv = p['CAT'] + '/' + p['PKG'] + '-' + p['VER']
             host_data['PACKAGES'][cpv] = dict()

diff --git a/server/index.py b/server/index.py
index 2204bd3..808759c 100644
--- a/server/index.py
+++ b/server/index.py
@@ -2,6 +2,7 @@
 from web import form
 from config import render, db
 
+# package search form
 search_form = form.Form(
         form.Textbox('cat', value = 'any', description = 'Category'),
         form.Textbox('pkg', value = 'any', description = 'Package'),

diff --git a/server/kwd.py b/server/kwd.py
index 779ac61..d9b30e2 100644
--- a/server/kwd.py
+++ b/server/kwd.py
@@ -4,13 +4,18 @@ from config import render, db
 
 class Keyword(object):
     def GET(self):
-        keyword_count = db.query('SELECT KEYWORD, COUNT(DISTINCT IPKEY) AS PACKAGES, COUNT(DISTINCT UUID) AS HOSTS FROM GLOBAL_KEYWORDS NATURAL JOIN KEYWORDS NATURAL JOIN INSTALLED_PACKAGES GROUP BY KEYWORD')
+        keyword_count = db.query('SELECT KEYWORD,\
+                COUNT(DISTINCT IPKEY) AS PACKAGES,\
+                COUNT(DISTINCT UUID) AS HOSTS\
+                FROM GLOBAL_KEYWORDS NATURAL JOIN KEYWORDS\
+                NATURAL JOIN INSTALLED_PACKAGES GROUP BY KEYWORD')
         keyword_data = dict()
         for t in keyword_count:
             keyword_data[t['KEYWORD']] = {'HOSTS':t['HOSTS'], 'PACKAGES':t['PACKAGES']}
         if helpers.is_json_request():
             return helpers.serialize(keyword_data)
         else:
+            # generate plot
             x_ticklabels = keyword_data.keys()
             y_values = [ keyword_data[k]['PACKAGES'] for k in x_ticklabels ]
             keyword_plot = helpers.barchart(title = 'Installed packages per keyword',

diff --git a/server/lang.py b/server/lang.py
index de6c625..5052378 100644
--- a/server/lang.py
+++ b/server/lang.py
@@ -4,7 +4,8 @@ from config import render, db
 
 class Lang(object):
     def GET(self):
-        lang_count = db.query('SELECT LANG,COUNT(UUID) AS HOSTS FROM HOST_LANG NATURAL JOIN LANG GROUP BY LANG')
+        lang_count = db.query('SELECT LANG,COUNT(UUID) AS HOSTS\
+                FROM HOST_LANG NATURAL JOIN LANG GROUP BY LANG')
         lang_data = dict()
         for t in lang_count:
             lang_data[t['LANG']] = {'HOSTS':t['HOSTS']}

diff --git a/server/mirror.py b/server/mirror.py
index e701404..4055c09 100644
--- a/server/mirror.py
+++ b/server/mirror.py
@@ -4,7 +4,8 @@ from config import render, db
 
 class Mirror(object):
     def GET(self):
-        mirror_count = db.query('SELECT MIRROR,COUNT(UUID) AS HOSTS FROM HOST_MIRRORS NATURAL JOIN GENTOO_MIRRORS GROUP BY MIRROR')
+        mirror_count = db.query('SELECT MIRROR,COUNT(UUID) AS HOSTS\
+                FROM HOST_MIRRORS NATURAL JOIN GENTOO_MIRRORS GROUP BY MIRROR')
         mirror_data = dict()
         for t in mirror_count:
             mirror_data[t['MIRROR']] = {'HOSTS':t['HOSTS']}

diff --git a/server/package.py b/server/package.py
index aa037e5..e73a139 100644
--- a/server/package.py
+++ b/server/package.py
@@ -24,6 +24,9 @@ class Package(object):
             return config.internalerror()
 
     def __GET(self, top):
+        """
+        Get category
+        """
         p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT, \
                 COUNT(DISTINCT CAT) AS C_COUNT, \
                 COUNT(DISTINCT CAT, PKG) AS CP_COUNT, \
@@ -44,6 +47,9 @@ class Package(object):
             return render.package(p_data)
 
     def __GET_C(self, top, cat):
+        """
+        Get category/package
+        """
         p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT, \
                 COUNT(DISTINCT CAT, PKG) AS CP_COUNT, \
                 COUNT(DISTINCT CAT, PKG, VER) AS CPV_COUNT\
@@ -63,6 +69,9 @@ class Package(object):
             return render.package_c(cat, p_data)
 
     def __GET_CP(self, top, cat, pkg):
+        """
+        Get category/package-version
+        """
         p_query = db.query('SELECT COUNT(DISTINCT UUID) AS HOST_COUNT, \
                 COUNT(DISTINCT CAT, PKG, VER) AS CPV_COUNT\
                 FROM INSTALLED_PACKAGES RIGHT OUTER JOIN PACKAGES\
@@ -94,6 +103,9 @@ class Package(object):
             return render.package_cpv(cat, pkg, ver, p_data)
 
     def __top(self, count, *args):
+        """
+        Find top entries
+        """
         t_list = list()
         if len(args) == 0:
             tc_query = db.query('SELECT CAT, COUNT(DISTINCT UUID) AS HOST_COUNT\

diff --git a/server/repo.py b/server/repo.py
index 7be99ac..f129fa0 100644
--- a/server/repo.py
+++ b/server/repo.py
@@ -4,7 +4,9 @@ from config import render, db
 
 class Repo(object):
     def GET(self):
-        repo_count = db.query('select REPO,COUNT(DISTINCT IPKEY) AS PACKAGES,COUNT(DISTINCT UUID) AS HOSTS from INSTALLED_PACKAGES natural join REPOSITORIES group by REPO')
+        repo_count = db.query('SELECT REPO,COUNT(DISTINCT IPKEY) AS PACKAGES,\
+                COUNT(DISTINCT UUID) AS HOSTS\
+                FROM INSTALLED_PACKAGES NATURAL JOIN REPOSITORIES GROUP BY REPO')
         repo_data = dict()
         for t in repo_count:
             repo_data[t['REPO']] = {'HOSTS':t['HOSTS'], 'PACKAGES':t['PACKAGES']}

diff --git a/server/search.py b/server/search.py
index d3d35d5..5543047 100644
--- a/server/search.py
+++ b/server/search.py
@@ -49,6 +49,9 @@ class Search(object):
             return render.search(search_tuples)
 
     def _build_query(self, where, having):
+        """
+        Build SELECT clause
+        """
         sep = ' '
         query = ''
         query += 'SELECT' + sep + ','.join(what) + sep
@@ -66,6 +69,9 @@ class Search(object):
         return query.strip()
 
     def _build_where(self):
+        """
+        Build WHERE clause
+        """
         where = []
         cat = string.lower(self.args.cat)
         if cat != 'any':
@@ -85,6 +91,9 @@ class Search(object):
         return where
 
     def _build_having(self):
+        """
+        Build HAVING clause
+        """
         having = []
         if self.min_hosts != -1:
             having.append('HOSTS>=$min_hosts')

diff --git a/server/tests/test_host.py b/server/tests/test_host.py
index b781a09..1b68050 100644
--- a/server/tests/test_host.py
+++ b/server/tests/test_host.py
@@ -7,14 +7,23 @@ from app import app
 class TestHost(unittest.TestCase):
 
     def setUp(self):
+        """
+        Initialize browser
+        """
         self.b = app.browser()
 
     def test_basic(self):
+        """
+        Test /host
+        """
         self.b.open('/host')
         self.assertEqual(self.b.path, '/host')
         self.assertEqual(self.b.status, 404)
 
     def test_get(self):
+        """
+        Test GET
+        """
         uri = '/host/' + str(uuid.uuid4())
         self.b.open(uri)
         self.assertEqual(self.b.path, uri)
@@ -25,6 +34,9 @@ class TestHost(unittest.TestCase):
         self.assertEqual(self.b.status, 404)
 
     def test_post_empty(self):
+        """
+        Test empty POST 
+        """
         str_uuid = str(uuid.uuid4())
         uri = '/host/' + str_uuid
         # post with empty string
@@ -47,6 +59,9 @@ class TestHost(unittest.TestCase):
         self.assertEqual(self.b.status, 500)
 
     def test_post_bad(self):
+        """
+        Test bad POST
+        """
         str_uuid = str(uuid.uuid4())
         uri = '/host/' + str_uuid
         # different uuid in payload
@@ -61,6 +76,9 @@ class TestHost(unittest.TestCase):
         self.assertTrue('Invalid uuid' in self.b.data)
 
     def test_post_get(self):
+        """
+        Test GET using POST
+        """
         str_uuid = str(uuid.uuid4())
         uri = '/host/' + str_uuid
         payload = {

diff --git a/server/tests/test_index.py b/server/tests/test_index.py
index f77a60d..0fdc740 100644
--- a/server/tests/test_index.py
+++ b/server/tests/test_index.py
@@ -5,17 +5,29 @@ from app import app
 class TestIndex(unittest.TestCase):
 
     def setUp(self):
+        """
+        Initialize browser
+        """
         self.b = app.browser()
         self.b.open('/')
 
     def test_basic(self):
+        """
+        Test /
+        """
         self.assertEqual(self.b.path, '/')
         self.assertEqual(self.b.status, 200)
 
     def test_content(self):
+        """
+        Test html
+        """
         self.assertTrue('Welcome to the gentoostats webapp' in self.b.data)
 
     def test_hosts(self):
+        """
+        Test host count from html
+        """
         self.assertTrue('Number of hosts' in self.b.data)
         lines = self.b.data.split('\n')
         for line in lines:



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-08-21 14:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-21 14:42 [gentoo-commits] proj/gentoostats:master commit in: server/, server/tests/ Vikraman Choudhury
  -- strict thread matches above, loose matches on Subject: below --
2011-06-29 15:14 Vikraman Choudhury

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox