changeset 1511:9733063421e1

add browser_test server for playing with /graph resource Ignore-this: 6112c234b93e0fb99ffe918a022e5a49 darcs-hash:fa614cb62e50d73e2e2f02ad79ec4c497cea8cbc
author drewp <drewp@bigasterisk.com>
date Mon, 03 Feb 2020 23:45:15 -0800
parents 2b6e939c8b10
children 1e9cfec1be78
files lib/patchablegraph/Dockerfile lib/patchablegraph/browser_test.py lib/patchablegraph/browser_test_requirements.txt lib/patchablegraph/tasks.py
diffstat 4 files changed, 76 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/patchablegraph/Dockerfile	Mon Feb 03 23:45:15 2020 -0800
@@ -0,0 +1,18 @@
+FROM bang6:5000/base_x86
+
+WORKDIR /opt
+
+COPY browser_test_requirements.txt ./
+
+RUN pip3 install --index-url https://projects.bigasterisk.com/ --extra-index-url https://pypi.org/simple -r browser_test_requirements.txt
+# not sure why this doesn't work from inside requirements.txt
+RUN pip3 install --index-url https://projects.bigasterisk.com/ --extra-index-url https://pypi.org/simple -U 'https://github.com/drewp/cyclone/archive/python3.zip?v2'
+
+COPY ./patchablegraph.py ./patchsource.py ./setup.py __init__.py patchablegraph/
+RUN pip3 install patchablegraph/
+
+COPY browser_test.py ./
+
+EXPOSE 8021
+
+CMD [ "python3", "browser_test.py" ]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/patchablegraph/browser_test.py	Mon Feb 03 23:45:15 2020 -0800
@@ -0,0 +1,33 @@
+"""
+see how a browser talks to this PatchableGraph
+"""
+
+from rdflib import Namespace, Literal, ConjunctiveGraph, URIRef, RDF
+from twisted.internet import reactor
+import cyclone.web
+
+from standardservice.logsetup import log, verboseLogging
+from patchablegraph import PatchableGraph, CycloneGraphEventsHandler, CycloneGraphHandler
+
+verboseLogging(True)
+
+graph = PatchableGraph()
+g = ConjunctiveGraph()
+g.add((URIRef('http://example.com/s'),
+       URIRef('http://example.com/p'),
+       URIRef('http://example.com/o'),
+       URIRef('http://example.com/g')))
+graph.setToGraph(g)
+
+class Application(cyclone.web.Application):
+    def __init__(self):
+        handlers = [
+            (r'/graph', CycloneGraphHandler, {'masterGraph': graph}),
+            (r'/graph/events', CycloneGraphEventsHandler,
+             {'masterGraph': graph}),
+        ]
+        cyclone.web.Application.__init__(self, handlers)
+
+
+reactor.listenTCP(8021, Application())
+reactor.run()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/patchablegraph/browser_test_requirements.txt	Mon Feb 03 23:45:15 2020 -0800
@@ -0,0 +1,10 @@
+rdflib==4.2.2
+Twisted
+cyclone
+
+https://github.com/drewp/cyclone/archive/python3.zip
+
+twisted_sse==0.3.0
+cycloneerr
+rdfdb==0.8.0
+standardservice==0.4.0
--- a/lib/patchablegraph/tasks.py	Mon Feb 03 22:08:54 2020 -0800
+++ b/lib/patchablegraph/tasks.py	Mon Feb 03 23:45:15 2020 -0800
@@ -7,3 +7,18 @@
 @task
 def release(ctx):
     local_release(ctx)
+
+@task
+def browser_test_build(ctx):
+    ctx.run(f'docker build --network=host  -t bang:5000/patchable_graph_browser_test .')
+
+@task(pre=[browser_test_build])
+def browser_test(ctx):
+    ctx.run(f'docker run '
+            f'--name patchable_graph_browser_test '
+            f'--rm -it '
+            f'--net=host '
+            f'-v `pwd`:/opt '
+            f'bang:5000/patchable_graph_browser_test '
+            f'/bin/bash'  #f'python3 browser_test.py',
+            pty=True)