Skip to content
This repository has been archived by the owner on Mar 24, 2021. It is now read-only.

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
nick-gravgaard committed Feb 26, 2014
1 parent 5a9989f commit 4cb1103
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 2 deletions.
2 changes: 1 addition & 1 deletion features/steps/write_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def step(context, token):
context.bearer_token = token

@contextmanager
def fake_bucket_if_necessary(contexdt):
def fake_bucket_if_necessary(context):
if 'fake_bucket_name' in context:
with pretend_bucket_exists(
BucketConfig(context.fake_bucket_name),
Expand Down
87 changes: 87 additions & 0 deletions features/support/stagecraft.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
from Queue import Empty
from multiprocessing import Process, Queue
import json
import time


import requests
from twisted.web import server, resource
from twisted.internet import reactor


class StagecraftService(object):
def __init__(self, port):
self.__port = port
self.__queue = None

def start(self):
self.__queue = Queue()
self.__proc = Process(target=self._run, args=(self.__queue,))
self.__proc.start()

def stop(self):
self.__proc.terminate()
self.__queue = None

def _run(self, queue):
site = server.Site(StagecraftResource(queue))

reactor.listenTCP(self.__port, site)
reactor.run()

def create_bucket(self, bucket):
if self.__queue is None:
raise "server is not running"

self.__queue.put(('bucket', bucket))

def reset(self):
if self.__queue is None:
raise "server is not running"
self.__queue.put(('reset', True))


class StagecraftResource(resource.Resource):
isLeaf = True

def __init__(self, queue):
self.__queue = queue

def _read_all_messages(self):
while True:
try:
message, arg = self.__queue.get_nowait()
if message == 'bucket':
self.set_bucket(arg)
elif message == 'reset':
self.__bucket = None
except Empty:
return

def set_bucket(self, bucket):
self.__bucket = bucket

def render_GET(self, request):
self._read_all_messages()
request.setHeader('Content-type', 'application/json')
return json.dumps(self.__bucket)


if __name__ == '__main__':
stagecraft = StagecraftService(8080)
stagecraft.start()
stagecraft.create_bucket({"foo":"bar"})

time.sleep(0.5)

result = requests.get('http://localhost:8080/data-sets/test-data-set')
print(result)
print(result.json())

result = requests.get('http://localhost:8080/data-sets?data-group=test-data-group&data-set=test-data-set')
print(result)
print(result.json())

stagecraft.stop()
#result = requests.get('http://localhost:8080/foo/bar')
#print(result)
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ Flask==0.10.1
Flask-FeatureFlags==0.3
gunicorn==18.0
invoke
logstash_formatter==0.5.7
pip==1.4.1
pymongo==2.6.3
python-dateutil==2.1
pytz==2013b
rauth==0.5.5
requests==1.2.3
statsd==2.0.3
Twisted==13.2.0
xlrd==0.9.2
logstash_formatter==0.5.7

0 comments on commit 4cb1103

Please sign in to comment.