class DynamoTest(TestCase): """Test our Dynamo extension.""" def setUp(self): """ Set up a simple Flask app for testing. This will be used throughout our tests. """ self.prefix = uuid4().hex self.app = Flask(__name__) self.app.config['DEBUG'] = True self.app.config['DYNAMO_TABLES'] = [ Table('%s-phones' % self.prefix, schema=[HashKey('number')]), Table('%s-users' % self.prefix, schema=[HashKey('username')]), ] self.dynamo = Dynamo(self.app) with self.app.app_context(): self.dynamo.create_all() sleep(60) def test_settings(self): self.assertEqual(len(self.app.config['DYNAMO_TABLES']), 2) self.assertEqual(self.app.config['AWS_ACCESS_KEY_ID'], environ.get('AWS_ACCESS_KEY_ID')) self.assertEqual(self.app.config['AWS_SECRET_ACCESS_KEY'], environ.get('AWS_SECRET_ACCESS_KEY')) self.assertEqual( self.app.config['AWS_REGION'], environ.get('AWS_REGION') or self.dynamo.DEFAULT_REGION) def test_connection(self): with self.app.app_context(): self.assertIsInstance(self.dynamo.connection, DynamoDBConnection) def test_tables(self): with self.app.app_context(): self.assertEqual(len(self.dynamo.tables.keys()), 2) for table_name, table in self.dynamo.tables.iteritems(): self.assertIsInstance(table, Table) self.assertEqual(table.table_name, table_name) def test_table_access(self): with self.app.app_context(): for table_name, table in self.dynamo.tables.iteritems(): self.assertEqual(getattr(self.dynamo, table_name), table) def tearDown(self): """Destroy all provisioned resources.""" with self.app.app_context(): self.dynamo.destroy_all() sleep(60)
class DynamoTest(TestCase): """Test our Dynamo extension.""" def setUp(self): """ Set up a simple Flask app for testing. This will be used throughout our tests. """ self.prefix = uuid4().hex self.app = Flask(__name__) self.app.config['DEBUG'] = True self.app.config['DYNAMO_TABLES'] = [ Table('%s-phones' % self.prefix, schema=[HashKey('number')]), Table('%s-users' % self.prefix, schema=[HashKey('username')]), ] self.dynamo = Dynamo(self.app) with self.app.app_context(): self.dynamo.create_all() sleep(60) def test_settings(self): self.assertEqual(len(self.app.config['DYNAMO_TABLES']), 2) self.assertEqual(self.app.config['AWS_ACCESS_KEY_ID'], environ.get('AWS_ACCESS_KEY_ID')) self.assertEqual(self.app.config['AWS_SECRET_ACCESS_KEY'], environ.get('AWS_SECRET_ACCESS_KEY')) self.assertEqual(self.app.config['AWS_REGION'], environ.get('AWS_REGION') or self.dynamo.DEFAULT_REGION) def test_connection(self): with self.app.app_context(): self.assertIsInstance(self.dynamo.connection, DynamoDBConnection) def test_tables(self): with self.app.app_context(): self.assertEqual(len(self.dynamo.tables.keys()), 2) for table_name, table in self.dynamo.tables.iteritems(): self.assertIsInstance(table, Table) self.assertEqual(table.table_name, table_name) def test_table_access(self): with self.app.app_context(): for table_name, table in self.dynamo.tables.iteritems(): self.assertEqual(getattr(self.dynamo, table_name), table) def tearDown(self): """Destroy all provisioned resources.""" with self.app.app_context(): self.dynamo.destroy_all() sleep(60)
def test_settings(self): self.assertEqual(len(self.app.config['DYNAMO_TABLES']), 2) self.assertEqual(self.app.config['AWS_ACCESS_KEY_ID'], environ.get('AWS_ACCESS_KEY_ID')) self.assertEqual(self.app.config['AWS_SECRET_ACCESS_KEY'], environ.get('AWS_SECRET_ACCESS_KEY')) self.assertEqual( self.app.config['AWS_REGION'], environ.get('AWS_REGION') or self.dynamo.DEFAULT_REGION) # Test DynamoDB local settings. app = Flask(__name__) app.config['DEBUG'] = True app.config['DYNAMO_TABLES'] = [ Table('%s-phones' % self.prefix, schema=[HashKey('number')]), Table('%s-users' % self.prefix, schema=[HashKey('username')]), ] app.config['DYNAMO_ENABLE_LOCAL'] = True self.assertRaises(ConfigurationError, Dynamo, app) app.config['DYNAMO_LOCAL_HOST'] = 'localhost' self.assertRaises(ConfigurationError, Dynamo, app) app.config['DYNAMO_LOCAL_PORT'] = 8000 self.assertIsInstance(Dynamo(app), object)
def setUp(self): """ Set up a simple Flask app for testing. This will be used throughout our tests. """ self.prefix = uuid4().hex self.app = Flask(__name__) self.app.config['DEBUG'] = True self.app.config['DYNAMO_TABLES'] = [ Table('%s-phones' % self.prefix, schema=[HashKey('number')]), Table('%s-users' % self.prefix, schema=[HashKey('username')]), ] self.dynamo = Dynamo(self.app) with self.app.app_context(): self.dynamo.create_all() sleep(60)
from boto.dynamodb2.fields import HashKey from boto.dynamodb2.table import Table from flask import Flask from flask.ext.dynamo import Dynamo import boto import boto3 app = Flask(__name__) app.config['DYNAMO_TABLES'] = [ Table('users', schema=[HashKey('username')]), Table('groups', schema=[HashKey('name')]), ] dynamo = Dynamo(app) # @app.route('/create_user') # def create_user(): # dynamo.users.put_item(data={ # 'username': '******', # 'first_name': 'Randall', # 'last_name': 'Degges', # 'email': '*****@*****.**', # }) # # # or ... # # dynamo.tables['users'].put_item(data={ # 'username': '******', # 'first_name': 'Randall', # 'last_name': 'Degges', # 'email': '*****@*****.**', # })
""" Use this script to setup DynamoDB tables. Author: Angad Gill """ from flask import Flask from flask.ext.dynamo import Dynamo import dynamodb_config # TODO: Figure out how to do this without Flask app = Flask(__name__) app.config['DYNAMO_TABLES'] = dynamodb_config.DYNAMO_TABLES dynamo = Dynamo(app) with app.app_context(): dynamo.create_all() print "Done!"
""" Simple server to receive GET requests from pwanalysis.js and dump all received data into a database. Author: Angad Gill """ from flask import Flask, request from flask.ext.dynamo import Dynamo import dynamodb_config import time app = Flask(__name__) app.config['DYNAMO_TABLES'] = dynamodb_config.DYNAMO_TABLES dynamo = Dynamo(app) # Assumes that DynamoDB tables are already setup @app.route('/collect', methods=['GET']) def index(): pagename = str(request.args.get('pagename')) time_stamp = time.time() # TODO: Replace 99999 below with actual user_id user_id = 99999 key = pagename + '_' + str(user_id) + '_' + str(time_stamp) print key with app.app_context(): dynamo.tables['pages'].put_item(data={ 'key': key, 'pagename': pagename, 'time': time_stamp,