about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2010-07-08 23:21:18 +0000
committerEric Wong <normalperson@yhbt.net>2010-07-08 23:21:18 +0000
commit9abb447a573751b87e26ce35f4f05d58290f4c41 (patch)
tree1adb0dac9acd99c9add0880751c7e022003776ef /t
parent235985c6c4b37ed9a170c38052db3ef0772b1527 (diff)
downloadrainbows-9abb447a573751b87e26ce35f4f05d58290f4c41.tar.gz
Cramp monkey patches Rainbows internals for WebSockets
support and we forgot about it.  Add a new integration
test to ensure this continues to work in the future
(and force us to update the test for newer Cramp).
Diffstat (limited to 't')
-rw-r--r--t/cramp/rainsocket.ru26
-rwxr-xr-xt/t0501-cramp-rainsocket.sh38
2 files changed, 64 insertions, 0 deletions
diff --git a/t/cramp/rainsocket.ru b/t/cramp/rainsocket.ru
new file mode 100644
index 0000000..0d26f70
--- /dev/null
+++ b/t/cramp/rainsocket.ru
@@ -0,0 +1,26 @@
+# based on examples/rainsocket.ru git://github.com/lifo/cramp
+# Rack::Lint does not like async + EM stuff, so disable it:
+#\ -E deployment
+require 'cramp/controller'
+
+Cramp::Controller::Websocket.backend = :rainbows
+
+class WelcomeController < Cramp::Controller::Websocket
+  periodic_timer :send_hello_world, :every => 2
+  on_data :received_data
+
+  def received_data(data)
+    if data =~ /fuck/
+      render "You cant say fuck in here"
+      finish
+    else
+      render "Got your #{data}"
+    end
+  end
+
+  def send_hello_world
+    render "Hello from the Server!\n"
+  end
+end
+
+run WelcomeController
diff --git a/t/t0501-cramp-rainsocket.sh b/t/t0501-cramp-rainsocket.sh
new file mode 100755
index 0000000..6e3aea4
--- /dev/null
+++ b/t/t0501-cramp-rainsocket.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+. ./test-lib.sh
+case $model in
+EventMachine) ;;
+*)
+        t_info "skipping $T since it's not compatible with $model"
+        exit 0
+        ;;
+esac
+require_check cramp Cramp::VERSION
+
+t_plan 4 "WebSocket monkey patch validity test for Cramp"
+
+CONFIG_RU=cramp/rainsocket.ru
+
+t_begin "setup and start" && {
+        rainbows_setup
+        rtmpfiles curl_err
+
+        # Like the rest of the EM/async stuff, it's not Rack::Lint compatible
+        rainbows -E deployment -D $CONFIG_RU -c $unicorn_config
+        rainbows_wait_start
+}
+
+t_begin "wait for server to say hello to us" && {
+        ok=$((curl --no-buffer -sS http://$listen/ || :) | \
+             awk '/Hello from the Server/ { print "ok"; exit 0 }')
+
+        test x"$ok" = xok
+}
+
+t_begin "termination signal sent" && {
+        kill $rainbows_pid
+}
+
+t_begin "no errors in stderr" && check_stderr
+
+t_done