|
@@ -1,9 +1,16 @@
|
|
#!/usr/bin/env python
|
|
#!/usr/bin/env python
|
|
|
|
+from functools import partial
|
|
|
|
+from operator import attrgetter
|
|
|
|
+from random import randint
|
|
|
|
+import sys
|
|
|
|
+
|
|
|
|
+import flask
|
|
from flask import Flask, jsonify, request, render_template
|
|
from flask import Flask, jsonify, request, render_template
|
|
from flask.ext.sqlalchemy import SQLAlchemy
|
|
from flask.ext.sqlalchemy import SQLAlchemy
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy import create_engine
|
|
-from random import randint
|
|
|
|
-from operator import attrgetter
|
|
|
|
|
|
+
|
|
|
|
+if sys.version_info[0] == 3:
|
|
|
|
+ xrange = range
|
|
|
|
|
|
try:
|
|
try:
|
|
import MySQLdb
|
|
import MySQLdb
|
|
@@ -15,6 +22,7 @@ except ImportError:
|
|
|
|
|
|
app = Flask(__name__)
|
|
app = Flask(__name__)
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = mysql_schema + '//benchmarkdbuser:benchmarkdbpass@DBHOSTNAME:3306/hello_world?charset=utf8'
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = mysql_schema + '//benchmarkdbuser:benchmarkdbpass@DBHOSTNAME:3306/hello_world?charset=utf8'
|
|
|
|
+app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False
|
|
db = SQLAlchemy(app)
|
|
db = SQLAlchemy(app)
|
|
dbraw_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
|
|
dbraw_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
|
|
|
|
|
|
@@ -44,44 +52,45 @@ class Fortune(db.Model):
|
|
|
|
|
|
@app.route("/json")
|
|
@app.route("/json")
|
|
def hello():
|
|
def hello():
|
|
- resp = {"message": "Hello, World!"}
|
|
|
|
- return jsonify(resp)
|
|
|
|
|
|
+ return jsonify(message='Hello, World!')
|
|
|
|
+
|
|
|
|
|
|
@app.route("/db")
|
|
@app.route("/db")
|
|
def get_random_world():
|
|
def get_random_world():
|
|
- num_queries = request.args.get("queries", 1)
|
|
|
|
- worlds = []
|
|
|
|
- for i in range(int(num_queries)):
|
|
|
|
- wid = randint(1, 10000)
|
|
|
|
- worlds.append(World.query.get(wid).serialize)
|
|
|
|
- return jsonify(worlds=worlds)
|
|
|
|
|
|
+ num_queries = request.args.get("queries", 1, type=int)
|
|
|
|
+ worlds = [World.query.get(randint(1, 10000)).serialize
|
|
|
|
+ for _ in xrange(10000)]
|
|
|
|
+ return jsonify(worlds=worlds)
|
|
|
|
+
|
|
|
|
|
|
@app.route("/dbs")
|
|
@app.route("/dbs")
|
|
def get_random_world_single():
|
|
def get_random_world_single():
|
|
- wid = randint(1, 10000)
|
|
|
|
- worlds = [World.query.get(wid).serialize]
|
|
|
|
- return jsonify(worlds=worlds)
|
|
|
|
-
|
|
|
|
|
|
+ wid = randint(1, 10000)
|
|
|
|
+ worlds = [World.query.get(wid).serialize]
|
|
|
|
+ return jsonify(worlds=worlds)
|
|
|
|
+
|
|
|
|
+
|
|
@app.route("/dbraw")
|
|
@app.route("/dbraw")
|
|
def get_random_world_raw():
|
|
def get_random_world_raw():
|
|
- connection = dbraw_engine.connect()
|
|
|
|
- num_queries = request.args.get("queries", 1)
|
|
|
|
- worlds = []
|
|
|
|
- for i in range(int(num_queries)):
|
|
|
|
- wid = randint(1, 10000)
|
|
|
|
- result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
|
|
|
|
- worlds.append({'id': result[0], 'randomNumber': result[1]})
|
|
|
|
- connection.close()
|
|
|
|
- return jsonify(worlds=worlds)
|
|
|
|
|
|
+ connection = dbraw_engine.connect()
|
|
|
|
+ num_queries = request.args.get("queries", 1, type=int)
|
|
|
|
+ worlds = []
|
|
|
|
+ for i in xrange(num_queries):
|
|
|
|
+ wid = randint(1, 10000)
|
|
|
|
+ result = connection.execute("SELECT * FROM World WHERE id = " + str(wid)).fetchone()
|
|
|
|
+ worlds.append({'id': result[0], 'randomNumber': result[1]})
|
|
|
|
+ connection.close()
|
|
|
|
+ return jsonify(worlds=worlds)
|
|
|
|
+
|
|
|
|
|
|
@app.route("/dbsraw")
|
|
@app.route("/dbsraw")
|
|
def get_random_world_single_raw():
|
|
def get_random_world_single_raw():
|
|
- connection = dbraw_engine.connect()
|
|
|
|
- wid = randint(1, 10000)
|
|
|
|
- result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
|
|
|
|
- worlds = [{'id': result[0], 'randomNumber': result[1]}]
|
|
|
|
- connection.close()
|
|
|
|
- return jsonify(worlds=worlds)
|
|
|
|
|
|
+ connection = dbraw_engine.connect()
|
|
|
|
+ wid = randint(1, 10000)
|
|
|
|
+ result = connection.execute("SELECT * FROM World WHERE id = " + str(wid)).fetchone()
|
|
|
|
+ worlds = [{'id': result[0], 'randomNumber': result[1]}]
|
|
|
|
+ connection.close()
|
|
|
|
+ return jsonify(worlds=worlds)
|
|
|
|
|
|
@app.route("/fortunes")
|
|
@app.route("/fortunes")
|
|
def get_fortunes():
|
|
def get_fortunes():
|
|
@@ -97,6 +106,50 @@ def get_forutens_raw():
|
|
fortunes.sort(key=attrgetter('message'))
|
|
fortunes.sort(key=attrgetter('message'))
|
|
return render_template('fortunes.html', fortunes=fortunes)
|
|
return render_template('fortunes.html', fortunes=fortunes)
|
|
|
|
|
|
|
|
+
|
|
|
|
[email protected]("/updates")
|
|
|
|
+def updates():
|
|
|
|
+ """Test 5: Database Updates"""
|
|
|
|
+ num_queries = request.args.get('queries', 1, type=int)
|
|
|
|
+ if num_queries > 500:
|
|
|
|
+ num_queries = 500
|
|
|
|
+
|
|
|
|
+ worlds = []
|
|
|
|
+ rp = partial(randint, 1, 10000)
|
|
|
|
+ for i in xrange(num_queries):
|
|
|
|
+ world = World.query.get(rp())
|
|
|
|
+ world.randomNumber = rp()
|
|
|
|
+ worlds.append(world.serialize)
|
|
|
|
+ db.session.commit()
|
|
|
|
+ return jsonify(worlds)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
[email protected]("/raw-updates")
|
|
|
|
+def raw_updates():
|
|
|
|
+ """Test 5: Database Updates"""
|
|
|
|
+ num_queries = request.args.get('queries', 1, type=int)
|
|
|
|
+ if num_queries > 500:
|
|
|
|
+ num_queries = 500
|
|
|
|
+
|
|
|
|
+ worlds = []
|
|
|
|
+ rp = partial(randint, 1, 10000)
|
|
|
|
+ for i in xrange(num_queries):
|
|
|
|
+ world = dbraw_engine.execute("SELECT * FROM World WHERE id=%s", (rp(),)).fetchone()
|
|
|
|
+ randomNumber = rp()
|
|
|
|
+ worlds.append({'id': world['id'], 'randomNumber': randomNumber})
|
|
|
|
+ dbraw_engine.execute("UPDATE World SET randomNumber=%s WHERE id=%s",
|
|
|
|
+ (randomNumber, world['id']))
|
|
|
|
+ return jsonify(worlds=worlds)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
[email protected]('/plaintext')
|
|
|
|
+def plaintext():
|
|
|
|
+ """Test 6: Plaintext"""
|
|
|
|
+ response = flask.make_response(b'Hello, World!')
|
|
|
|
+ response.content_type = 'text/plain'
|
|
|
|
+ return response
|
|
|
|
+
|
|
|
|
+
|
|
# entry point for debugging
|
|
# entry point for debugging
|
|
if __name__ == "__main__":
|
|
if __name__ == "__main__":
|
|
app.run(debug=True)
|
|
app.run(debug=True)
|